
Security News
Deno Goes the Way of the Dinosaur
Cloudflare is acquiring Deno’s team, which will provide another year of bug fixes and security updates before ending support for the runtime.
@reportwright/cli
Advanced tools
pw: render, test and diff ReportWright reports from the command line (no server). Fonts come from @reportwright/fonts.
npx -p @reportwright/cli pw render statement.pw.json -p accountId=LN-1 -d loans=data.json -f pdf -o statement.pdf
npx -p @reportwright/cli pw test reports # snapshot tests for reports-as-code
npx -p @reportwright/cli pw import invoice.jrxml # JasperReports, SSRS (.rdl) or BIRT → invoice.pw.json
pw render -f pdf -o file streams a flowing table into the file as it is laid out (exportPdfStream; the message says
streamed), so a large report's memory stays flat; other reports, --password and -o - render the whole model first.
It writes to a temporary file beside the target and renames it when the export succeeded: a failed run leaves no
damaged PDF, and an older file at the path stays as it was.
pw testpw test <folder> renders every <folder>/__tests__/*.test.json and compares it with a snapshot beside it. Each test file says which report to render and which cases to run:
{
"report": "../loan-statement.pw.json",
"cases": [
{ "name": "home-loan", "parameters": { "accountId": "LN-1" }, "data": { "loans": "loans.data.json" }, "now": "2026-01-01T09:00:00" },
{ "name": "shape", "layout": true }
]
}
report: the report, relative to the __tests__ folder.cases[].name: names the snapshot (<file>.<name>.snap.txt). Required.cases[].parameters: report parameters (name → value).cases[].data: JSON for a data source by name: a file path (relative to __tests__) or the JSON itself.cases[].now: the report's "now" (default 2026-01-01T09:00:00), so dates in the output do not drift.cases[].state: drill-down toggles, e.g. { "toggles": { "Pivot|r0|/North": false } }.cases[].layout: true compares this case by layout (see below).A case without layout is compared by its words, page by page: pw test passes when the text is the same. A font size, a colour or a column width can change and still pass.
pw test reports --layout (or "layout": true on a case) compares the layout instead. Each page's snapshot lists every item's box (x, y, w, h in points, rounded to 0.5), a text's font size and colour, a shape's fill, and each table's column widths. Changing any of them fails the test and prints the lines that changed. Snapshots for layout cases are <file>.<name>.layout.snap.txt, so a case can be kept in both modes.
pw test reports --update writes the new snapshots: the words, or the layout for --layout runs and layout: true cases. Exit code 1 means a test failed.
The package is the report commands only (render, test, diff, import): no server code, no child processes, and it
reads no environment variables. pw audit and pw migrate-storage work on a ReportWright server's storage, so they run
from the app folder (node bin/pw.mjs audit verify).
MIT.
FAQs
pw: render, test and diff ReportWright reports from the command line.
The npm package @reportwright/cli receives a total of 806 weekly downloads. As such, @reportwright/cli popularity was classified as not popular.
We found that @reportwright/cli demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
Cloudflare is acquiring Deno’s team, which will provide another year of bug fixes and security updates before ending support for the runtime.

Security News
Anthropic’s free OSS Scanner uses Mythos and other Claude models to find open source vulnerabilities and send maintainers reports with proposed fixes.

Security News
On Front Lines’ Early Adopters: CISO podcast, Andrew Becherer shares lessons from Datadog, weighs the long-term costs of AI-built tools, and explains how founders can actually gain a CISO’s trust.