import assert from 'node:assert/strict' import { readFileSync } from 'node:fs' import { join } from 'node:path' import test from 'node:test' import { fileURLToPath } from 'node:url' const root = join(fileURLToPath(new URL('..', import.meta.url))) const html = readFileSync(join(root, 'source', 'index.html'), 'utf8') const css = readFileSync(join(root, 'source', 'report.css'), 'utf8') const javascript = readFileSync(join(root, 'source', 'report.js'), 'utf8') const builder = readFileSync(join(root, 'scripts', 'build-report-web.mjs'), 'utf8') const ocrValidator = readFileSync(join(root, 'scripts', 'validate-screenshot-privacy-ocr.mjs'), 'utf8') const deploymentValidator = readFileSync(join(root, 'scripts', 'validate-deployed-report.mjs'), 'utf8') const attestationSchema = JSON.parse( readFileSync(join(root, 'public-release-attestation.schema.json'), 'utf8') ) test('图片查看器暴露完整的可访问缩放控制', () => { for (const id of [ 'lightbox-stage', 'lightbox-canvas', 'lightbox-zoom-out', 'lightbox-zoom', 'lightbox-zoom-in', 'lightbox-fit', 'lightbox-actual', ]) { assert.match(html, new RegExp(`id="${id}"`)) } assert.match(html, /aria-live="polite"/) assert.match(html, /aria-describedby="lightbox-zoom-hint"/) assert.match(javascript, /