[{"data":1,"prerenderedAt":452},["ShallowReactive",2],{"navigation_docs":3,"-manifest-reading":93,"-manifest-reading-surround":447},[4,41,46,89],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":40},"Learn","i-lucide-book-open","\u002Flearn","1.learn",[10,15,20,25,30,35],{"title":11,"path":12,"stem":13,"icon":14},"What visual regression testing is","\u002Flearn\u002Fwhat-is-visual-regression-testing","1.learn\u002F1.what-is-visual-regression-testing","i-lucide-eye",{"title":16,"path":17,"stem":18,"icon":19},"How image diffing works","\u002Flearn\u002Fhow-image-diffing-works","1.learn\u002F2.how-image-diffing-works","i-lucide-diff",{"title":21,"path":22,"stem":23,"icon":24},"Why screenshots flake","\u002Flearn\u002Fwhy-screenshots-flake","1.learn\u002F3.why-screenshots-flake","i-lucide-shuffle",{"title":26,"path":27,"stem":28,"icon":29},"Baselines and approval","\u002Flearn\u002Fbaselines-and-approval","1.learn\u002F4.baselines-and-approval","i-lucide-check-check",{"title":31,"path":32,"stem":33,"icon":34},"Running in CI","\u002Flearn\u002Frunning-in-ci","1.learn\u002F5.running-in-ci","i-lucide-workflow",{"title":36,"path":37,"stem":38,"icon":39},"Choosing a tool","\u002Flearn\u002Fchoosing-a-tool","1.learn\u002F6.choosing-a-tool","i-lucide-list-checks",false,{"title":42,"path":43,"stem":44,"icon":45},"Compare the tools","\u002Fcompare","2.compare","i-lucide-scale",{"title":47,"path":48,"stem":49,"children":50,"icon":53},"Manifest","\u002Fmanifest","3.manifest\u002F1.index",[51,54,59,64,69,74,79,84],{"title":52,"path":48,"stem":49,"icon":53},"The run manifest","i-lucide-file-json",{"title":55,"path":56,"stem":57,"icon":58},"The format","\u002Fmanifest\u002Fformat","3.manifest\u002F2.format","i-lucide-file-code",{"title":60,"path":61,"stem":62,"icon":63},"Reading manifests","\u002Fmanifest\u002Freading","3.manifest\u002F3.reading","i-lucide-book-open-check",{"title":65,"path":66,"stem":67,"icon":68},"Merging the manifests of a run","\u002Fmanifest\u002Fmerging","3.manifest\u002F4.merging","i-lucide-merge",{"title":70,"path":71,"stem":72,"icon":73},"Writing manifests","\u002Fmanifest\u002Fwriting","3.manifest\u002F5.writing","i-lucide-pencil-line",{"title":75,"path":76,"stem":77,"icon":78},"Converting to and from other formats","\u002Fmanifest\u002Fconverting","3.manifest\u002F6.converting","i-lucide-arrow-left-right",{"title":80,"path":81,"stem":82,"icon":83},"Reference","\u002Fmanifest\u002Freference","3.manifest\u002F7.reference","i-lucide-list",{"title":85,"path":86,"stem":87,"icon":88},"Schema reference","\u002Fmanifest\u002Fschema","3.manifest\u002F8.schema","i-lucide-braces",{"title":90,"path":91,"stem":92,"icon":14},"Viewer","\u002Fviewer","4.viewer",{"id":94,"title":60,"body":95,"description":440,"extension":441,"links":442,"meta":443,"navigation":444,"path":61,"seo":445,"stem":62,"__hash__":446},"docs\u002F3.manifest\u002F3.reading.md",{"type":96,"value":97,"toc":438},"minimark",[98,419,434],[99,100,105],"pre",{"className":101,"code":102,"language":103,"meta":104,"style":104},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import {\n  readManifestFiles,\n  readManifestFile,\n  parseManifest,\n  ManifestParseError,\n} from 'visual-regression-manifest';\n\n\u002F\u002F every manifest below a directory (an unpacked CI artifact), sorted by path\nconst found = readManifestFiles('artifacts\u002Ftest');\n\u002F\u002F -> [{ file: '...\u002Fvisual-regression-manifest.e2e.json', manifest: {...} }, ...]\n\n\u002F\u002F one file\nconst manifest = readManifestFile(\n  'cypress\u002Fscreenshots\u002Fvisual-regression-manifest.e2e.json',\n);\n\n\u002F\u002F already-parsed JSON from anywhere (a zip entry, an HTTP body)\ntry {\n  const manifest = parseManifest(\n    json,\n    'test.zip:visual-regression-manifest.e2e.json',\n  );\n} catch (error) {\n  if (error instanceof ManifestParseError)\n    console.error(error.message, error.issues);\n}\n","ts","",[106,107,108,121,131,139,147,155,177,184,191,223,229,234,240,256,269,276,281,287,295,313,321,334,342,356,378,413],"code",{"__ignoreMap":104},[109,110,113,117],"span",{"class":111,"line":112},"line",1,[109,114,116],{"class":115},"s7zQu","import",[109,118,120],{"class":119},"sMK4o"," {\n",[109,122,124,128],{"class":111,"line":123},2,[109,125,127],{"class":126},"sTEyZ","  readManifestFiles",[109,129,130],{"class":119},",\n",[109,132,134,137],{"class":111,"line":133},3,[109,135,136],{"class":126},"  readManifestFile",[109,138,130],{"class":119},[109,140,142,145],{"class":111,"line":141},4,[109,143,144],{"class":126},"  parseManifest",[109,146,130],{"class":119},[109,148,150,153],{"class":111,"line":149},5,[109,151,152],{"class":126},"  ManifestParseError",[109,154,130],{"class":119},[109,156,158,161,164,167,171,174],{"class":111,"line":157},6,[109,159,160],{"class":119},"}",[109,162,163],{"class":115}," from",[109,165,166],{"class":119}," '",[109,168,170],{"class":169},"sfazB","visual-regression-manifest",[109,172,173],{"class":119},"'",[109,175,176],{"class":119},";\n",[109,178,180],{"class":111,"line":179},7,[109,181,183],{"emptyLinePlaceholder":182},true,"\n",[109,185,187],{"class":111,"line":186},8,[109,188,190],{"class":189},"sHwdD","\u002F\u002F every manifest below a directory (an unpacked CI artifact), sorted by path\n",[109,192,194,198,201,204,208,211,213,216,218,221],{"class":111,"line":193},9,[109,195,197],{"class":196},"spNyl","const",[109,199,200],{"class":126}," found ",[109,202,203],{"class":119},"=",[109,205,207],{"class":206},"s2Zo4"," readManifestFiles",[109,209,210],{"class":126},"(",[109,212,173],{"class":119},[109,214,215],{"class":169},"artifacts\u002Ftest",[109,217,173],{"class":119},[109,219,220],{"class":126},")",[109,222,176],{"class":119},[109,224,226],{"class":111,"line":225},10,[109,227,228],{"class":189},"\u002F\u002F -> [{ file: '...\u002Fvisual-regression-manifest.e2e.json', manifest: {...} }, ...]\n",[109,230,232],{"class":111,"line":231},11,[109,233,183],{"emptyLinePlaceholder":182},[109,235,237],{"class":111,"line":236},12,[109,238,239],{"class":189},"\u002F\u002F one file\n",[109,241,243,245,248,250,253],{"class":111,"line":242},13,[109,244,197],{"class":196},[109,246,247],{"class":126}," manifest ",[109,249,203],{"class":119},[109,251,252],{"class":206}," readManifestFile",[109,254,255],{"class":126},"(\n",[109,257,259,262,265,267],{"class":111,"line":258},14,[109,260,261],{"class":119},"  '",[109,263,264],{"class":169},"cypress\u002Fscreenshots\u002Fvisual-regression-manifest.e2e.json",[109,266,173],{"class":119},[109,268,130],{"class":119},[109,270,272,274],{"class":111,"line":271},15,[109,273,220],{"class":126},[109,275,176],{"class":119},[109,277,279],{"class":111,"line":278},16,[109,280,183],{"emptyLinePlaceholder":182},[109,282,284],{"class":111,"line":283},17,[109,285,286],{"class":189},"\u002F\u002F already-parsed JSON from anywhere (a zip entry, an HTTP body)\n",[109,288,290,293],{"class":111,"line":289},18,[109,291,292],{"class":115},"try",[109,294,120],{"class":119},[109,296,298,301,304,307,310],{"class":111,"line":297},19,[109,299,300],{"class":196},"  const",[109,302,303],{"class":126}," manifest",[109,305,306],{"class":119}," =",[109,308,309],{"class":206}," parseManifest",[109,311,255],{"class":312},"swJcz",[109,314,316,319],{"class":111,"line":315},20,[109,317,318],{"class":126},"    json",[109,320,130],{"class":119},[109,322,324,327,330,332],{"class":111,"line":323},21,[109,325,326],{"class":119},"    '",[109,328,329],{"class":169},"test.zip:visual-regression-manifest.e2e.json",[109,331,173],{"class":119},[109,333,130],{"class":119},[109,335,337,340],{"class":111,"line":336},22,[109,338,339],{"class":312},"  )",[109,341,176],{"class":119},[109,343,345,347,350,353],{"class":111,"line":344},23,[109,346,160],{"class":119},[109,348,349],{"class":115}," catch",[109,351,352],{"class":126}," (error) ",[109,354,355],{"class":119},"{\n",[109,357,359,362,365,368,371,375],{"class":111,"line":358},24,[109,360,361],{"class":115},"  if",[109,363,364],{"class":312}," (",[109,366,367],{"class":126},"error",[109,369,370],{"class":119}," instanceof",[109,372,374],{"class":373},"sBMFI"," ManifestParseError",[109,376,377],{"class":312},")\n",[109,379,381,384,387,389,391,393,395,398,401,404,406,409,411],{"class":111,"line":380},25,[109,382,383],{"class":126},"    console",[109,385,386],{"class":119},".",[109,388,367],{"class":206},[109,390,210],{"class":312},[109,392,367],{"class":126},[109,394,386],{"class":119},[109,396,397],{"class":126},"message",[109,399,400],{"class":119},",",[109,402,403],{"class":126}," error",[109,405,386],{"class":119},[109,407,408],{"class":126},"issues",[109,410,220],{"class":312},[109,412,176],{"class":119},[109,414,416],{"class":111,"line":415},26,[109,417,418],{"class":119},"}\n",[420,421,422,425,426,429,430,433],"p",{},[106,423,424],{},"parseManifest"," validates against the shipped schema with a small built-in interpreter (cross-checked against Ajv in the test suite); ",[106,427,428],{},"validateManifest"," returns the issues without throwing and ",[106,431,432],{},"isManifest"," is the type guard. Unknown keys pass through untouched.",[435,436,437],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":104,"searchDepth":123,"depth":123,"links":439},[],"import {","md",null,{"generated":182},{"icon":63},{"title":60,"description":440},"1x7KNMjm96AqsGP4baEYshanpxEOvbO-afwmU9a8xO8",[448,450],{"title":55,"path":56,"stem":57,"description":449,"icon":58,"children":-1},"The normative description is the JSON Schema (draft 2020-12) at https:\u002F\u002Fvisual-regression.dev\u002Fschema\u002Fv1.json, shipped as schema.json (in the package, and in the repository under src\u002F) and importable as visual-regression-manifest\u002Fschema.json or the manifestSchema export.",{"title":65,"path":66,"stem":67,"description":451,"icon":68,"children":-1},"A run usually produces several manifests.",1791993875572]