Image Load Lab - scripts for the October 2026 test series
=========================================================

These are the Node.js and Python scripts behind every number published in the
Image Load Lab guides (https://imageloadlab.com/). They were run on Windows 11
(Intel Core i5-13400F, 32 GB RAM) with Node.js 24.19.0 and Python 3.14.3.
Exact library and tool versions are in env.json.

Corpus
------
photos.csv lists the 20 CC0 / public-domain photographs (title, author, licence,
source URL and SHA-256 of the downloaded original). scripts/fetch_corpus.py
downloads them again from Wikimedia Commons. The photos are not included here.

Main scripts (scripts/)
-----------------------
prepare.mjs                 reference images (orientation, sRGB, 1600 px), synthetic fixtures, screenshots
encode.mjs, metrics.py      encoding with sharp; SSIM (scikit-image), DSSIM, SSIMULACRA2
run_codecs.py               JPEG / WebP / AVIF quality ladders and chroma variants
analyze_codecs.py           equal-quality interpolation, WebP quality by image type
run_exif.py                 metadata inventory, lossless strip, orientation
run_alpha_icons_dpr.mjs     transparency, SVG/PNG icons, high-DPI candidates
run_lossless_effort.mjs     lossless screenshots, AVIF effort timing
run_browser_jpeg.mjs        Chrome canvas.toBlob JPEG/WebP ladder
run_pending.py              AVIF 4:2:0, DPR scoring, plugin potential
build_pages.mjs             local test pages for the loading experiments
server.mjs, harness.mjs     local HTTP/1.1 and HTTP/2 server; Playwright + Chrome with CDP throttling
run_loading.mjs             lazy loading, CLS, priority, srcset, decoding, CSS backgrounds,
                            art direction, WordPress sizes, lazy distance
run_wp_upload.py            upload test against a WordPress site (needs your own credentials)
run_devtools_audit.mjs      request audit of live pages
charts.py, build_assets*.py charts and tables from the CSV files

Required tools (not included): sharp and playwright-core (npm), numpy, scipy,
scikit-image, Pillow, requests (pip), Google Chrome, cwebp/dwebp 1.6.0,
avifenc/avifdec 1.4.2, oxipng 10.2.1, dssim 3.4.0, ssimulacra2 (libjxl 0.12.0).

Licence: you may run, modify and reuse these scripts. Please link to the guide
a result comes from when you cite it. Provided as is, without warranty.
