vitest-plugin-vis 4.0.0 → 4.1.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.
- package/dist/{augment-BJmy1S7i.d.mts → augment-C1tjdh5B.d.mts} +5 -3
- package/dist/augment-C1tjdh5B.d.mts.map +1 -0
- package/dist/{task_id-DnS9_4Ub.mjs → auto_snapshot_matcher-C0y6mAeS.mjs} +172 -107
- package/dist/auto_snapshot_matcher-C0y6mAeS.mjs.map +1 -0
- package/dist/{auto_snapshot_options-CaQCXDdi.d.mts → auto_snapshot_options-BMRtKmod.d.mts} +3 -3
- package/dist/auto_snapshot_options-BMRtKmod.d.mts.map +1 -0
- package/dist/{auto_snapshot_options-CAD43Zkp.mjs → auto_snapshot_options-DUOTpF2N.mjs} +5 -7
- package/dist/auto_snapshot_options-DUOTpF2N.mjs.map +1 -0
- package/dist/client-api.d.mts +13 -110
- package/dist/client-api.d.mts.map +1 -1
- package/dist/client-api.mjs +3 -3
- package/dist/client-api.mjs.map +1 -1
- package/dist/commands.types-BVhcnnHw.d.mts +51 -0
- package/dist/commands.types-BVhcnnHw.d.mts.map +1 -0
- package/dist/config.d.mts +3 -3
- package/dist/config.mjs.map +1 -1
- package/dist/index.d.mts +5 -5
- package/dist/index.mjs +1 -1
- package/dist/presets/auto.mjs +3 -3
- package/dist/presets/enable.mjs +3 -3
- package/dist/presets/manual.mjs +3 -3
- package/dist/server-utils.d.mts +4 -4
- package/dist/setup-DCytWz48.mjs +124 -0
- package/dist/setup-DCytWz48.mjs.map +1 -0
- package/dist/setup.d.mts +8 -12
- package/dist/setup.d.mts.map +1 -1
- package/dist/setup.mjs +3 -3
- package/dist/{to_match_image_snapshot.types-p-zilA_M.d.mts → to_match_image_snapshot.types--tTmHoRA.d.mts} +2 -2
- package/dist/{to_match_image_snapshot.types-p-zilA_M.d.mts.map → to_match_image_snapshot.types--tTmHoRA.d.mts.map} +1 -1
- package/dist/{trim_common_folder-ModiubEJ.d.mts → trim_common_folder-DBThLerp.d.mts} +1 -1
- package/dist/trim_common_folder-DBThLerp.d.mts.map +1 -0
- package/dist/{types-DFb23VE1.d.mts → types-CEmjj-A9.d.mts} +37 -3
- package/dist/types-CEmjj-A9.d.mts.map +1 -0
- package/dist/{types-Do1N7g4c.d.mts → types-DJYCbyT8.d.mts} +2 -2
- package/dist/{types-Do1N7g4c.d.mts.map → types-DJYCbyT8.d.mts.map} +1 -1
- package/package.json +5 -5
- package/src/client/actions/has_image_snapshot_action.ts +1 -1
- package/src/client/actions/load_image_snapshot_results_action.ts +1 -1
- package/src/client/actions/match_image_snapshot_action.ts +6 -4
- package/src/client/actions/match_page_image_snapshot_action.ts +5 -3
- package/src/client/expect/_ctx.ts +10 -0
- package/src/client/expect/to_match_image_snapshot.ts +3 -4
- package/src/client/external/browser/has_render_content.ts +3 -0
- package/src/client/{image_resizer.ts → external/browser/image_resizer.ts} +1 -1
- package/src/client/{vitest_suite_proxy.ts → external/vitest/vitest_suite_proxy.ts} +1 -1
- package/src/client/{align_images.ts → image/align_images.ts} +3 -3
- package/src/client/page/_ctx.ts +12 -0
- package/src/client/page/has_image_snapshot.ts +4 -4
- package/src/client/page/to_match_image_snapshot.ts +3 -4
- package/src/client/{compare_image_snapshot.logic.ts → snapshot/compare_image_snapshot.logic.ts} +1 -1
- package/src/client/{compare_image_snapshot.ts → snapshot/compare_image_snapshot.ts} +8 -9
- package/src/client/snapshot/should_take_snapshot.ts +6 -0
- package/src/client/suite/_ctx.ts +8 -0
- package/src/client/suite/auto_snapshot_matcher.ts +68 -0
- package/src/client/{ctx.ts → task/_ctx.ts} +1 -3
- package/src/client/{auto_snapshot_options.ts → task/auto_snapshot_options.ts} +4 -4
- package/src/client/{snapshot_meta.ts → task/snapshot_meta.ts} +1 -1
- package/src/client-api.ts +3 -2
- package/src/index.ts +1 -1
- package/src/server/commands/augment.ts +8 -6
- package/src/server/commands/has_image_snapshot.ts +1 -4
- package/src/server/commands/image_snapshot_next_index.ts +1 -7
- package/src/server/commands/load_image_snapshot_results.ts +1 -20
- package/src/server/commands/prepare_image_snapshot_comparison.ts +2 -48
- package/src/server/commands/prepare_page_image_snapshot_comparison.ts +1 -43
- package/src/server/commands/setup_vis_suite.ts +0 -24
- package/src/server/vis_server_context.logic.ts +1 -1
- package/src/{client/setup → setup}/create_vis.ts +22 -79
- package/src/setup/readme.md +5 -0
- package/src/setup.ts +2 -2
- package/src/shared/commands.types.ts +71 -0
- package/src/shared/types.ts +53 -1
- package/dist/augment-BJmy1S7i.d.mts.map +0 -1
- package/dist/auto_snapshot_options-CAD43Zkp.mjs.map +0 -1
- package/dist/auto_snapshot_options-CaQCXDdi.d.mts.map +0 -1
- package/dist/setup-BWgIDtv-.mjs +0 -141
- package/dist/setup-BWgIDtv-.mjs.map +0 -1
- package/dist/setup_vis_suite-C6JGGT7B.d.mts +0 -17
- package/dist/setup_vis_suite-C6JGGT7B.d.mts.map +0 -1
- package/dist/task_id-DnS9_4Ub.mjs.map +0 -1
- package/dist/trim_common_folder-ModiubEJ.d.mts.map +0 -1
- package/dist/types-DFb23VE1.d.mts.map +0 -1
- package/dist/vis_server_context.types-Ce1f9vOO.d.mts +0 -1
- package/src/client/image_snapshot_options.ts +0 -6
- package/src/client/setup/vis.ctx.ts +0 -34
- package/src/client/should_take_snapshot.ts +0 -5
- package/src/server/commands/types.ts +0 -9
- /package/src/client/{image_data.ts → external/browser/image_data.ts} +0 -0
- /package/src/client/{selector.ts → external/browser/selector.ts} +0 -0
- /package/src/client/{vitest_browser_context_proxy.ts → external/vitest/vitest_browser_context_proxy.ts} +0 -0
- /package/src/client/{auto_snapshot_options.mdx → task/auto_snapshot_options.mdx} +0 -0
- /package/src/client/{task_id.ts → task/task_id.ts} +0 -0
- /package/src/{client/setup → setup}/vis.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-api.d.mts","names":[],"sources":["../src/server/commands/
|
|
1
|
+
{"version":3,"file":"client-api.d.mts","names":[],"sources":["../src/server/commands/augment.ts","../src/client/actions/has_image_snapshot_action.ts","../src/client/actions/load_image_snapshot_results_action.ts","../src/client/actions/match_image_snapshot_action.ts","../src/client/actions/match_page_image_snapshot_action.ts","../src/client/expect/expectation_result.ts","../src/client/suite/auto_snapshot_matcher.ts","../src/client/task/task_id.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;oCAWU,sBACP,+BACA,yBACA,2CACA,uCACA;;;;;iBCba,sBAAA,WACL,gCAAgC,mDAEhC,sCAAmC;;;iBCJ9B,8BAAA,WAAyC,kDAA+C,QAAhB,mBAAA;;;iBCSlE,wBAAA,WACX,kBAAkB,wCAAwC,uEAG1D,mCAAgC;;;iBCNrB,4BAAA,WACX,kBAAkB,wCAAwC,yDAE1D,mCAAgC;;;cCV9B,SAAS;;;iBCON,+BAA+B,mDACpC;;0BASe,4BAA4B,iDAC3C,oCAEc,aAAa,KAAK,IAAI,OAAO,mBAAmB,yCACrE;;;;KCvBC,IAAA;;UAEI;;iBAGO,QAAA,OAAe"}
|
package/dist/client-api.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import "./asserts--HSSlgPD.mjs";
|
|
2
2
|
import { a as SNAPSHOT_ROOT_DIR, i as RESULT_DIR, n as DIFF_DIR, r as NAME, t as BASELINE_DIR } from "./constants-CTBaz8Ml.mjs";
|
|
3
|
-
import { n as setAutoSnapshotOptions } from "./auto_snapshot_options-
|
|
3
|
+
import { n as setAutoSnapshotOptions } from "./auto_snapshot_options-DUOTpF2N.mjs";
|
|
4
4
|
import "./base64-CHSENEAO.mjs";
|
|
5
|
-
import { a as
|
|
5
|
+
import { a as matchImageSnapshotAction, i as matchPageImageSnapshotAction, n as toTaskId, o as hasImageSnapshotAction, r as success, t as autoSnapshotMatcher } from "./auto_snapshot_matcher-C0y6mAeS.mjs";
|
|
6
6
|
|
|
7
7
|
//#region src/client/actions/load_image_snapshot_results_action.ts
|
|
8
8
|
function loadImageSnapshotResultsAction(commands, taskId) {
|
|
@@ -10,5 +10,5 @@ function loadImageSnapshotResultsAction(commands, taskId) {
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
//#endregion
|
|
13
|
-
export { BASELINE_DIR, DIFF_DIR, NAME, RESULT_DIR, SNAPSHOT_ROOT_DIR, hasImageSnapshotAction, loadImageSnapshotResultsAction, matchImageSnapshotAction, matchPageImageSnapshotAction, setAutoSnapshotOptions, success, toTaskId };
|
|
13
|
+
export { BASELINE_DIR, DIFF_DIR, NAME, RESULT_DIR, SNAPSHOT_ROOT_DIR, autoSnapshotMatcher, hasImageSnapshotAction, loadImageSnapshotResultsAction, matchImageSnapshotAction, matchPageImageSnapshotAction, setAutoSnapshotOptions, success, toTaskId };
|
|
14
14
|
//# sourceMappingURL=client-api.mjs.map
|
package/dist/client-api.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-api.mjs","names":[],"sources":["../src/client/actions/load_image_snapshot_results_action.ts"],"sourcesContent":["import type { LoadImageSnapshotResultsCommand } from '../../
|
|
1
|
+
{"version":3,"file":"client-api.mjs","names":[],"sources":["../src/client/actions/load_image_snapshot_results_action.ts"],"sourcesContent":["import type { LoadImageSnapshotResultsCommand } from '../../shared/commands.types.ts'\n\nexport function loadImageSnapshotResultsAction(commands: LoadImageSnapshotResultsCommand, taskId: string) {\n\treturn commands.loadImageSnapshotResults(taskId)\n}\n"],"mappings":";;;;;;;AAEA,SAAgB,+BAA+B,UAA2C,QAAgB;AACzG,QAAO,SAAS,yBAAyB,OAAO"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { a as ImageSnapshotComparisonInfo, l as MatchImageSnapshotOptions } from "./types-CEmjj-A9.mjs";
|
|
2
|
+
import { t as VisOptions } from "./types-DJYCbyT8.mjs";
|
|
3
|
+
import { Pick } from "type-plus";
|
|
4
|
+
|
|
5
|
+
//#region src/shared/commands.types.d.ts
|
|
6
|
+
interface PrepareImageSnapshotComparisonCommand {
|
|
7
|
+
prepareImageSnapshotComparison: (taskId: string, subject: string, options?: MatchImageSnapshotOptions | undefined) => Promise<ImageSnapshotComparisonInfo | undefined>;
|
|
8
|
+
}
|
|
9
|
+
interface PreparePageImageSnapshotComparisonCommand {
|
|
10
|
+
preparePageImageSnapshotComparison: (taskId: string, options?: MatchImageSnapshotOptions | undefined) => Promise<ImageSnapshotComparisonInfo | undefined>;
|
|
11
|
+
}
|
|
12
|
+
interface SetupVisSuiteCommand {
|
|
13
|
+
/**
|
|
14
|
+
* Sets up the visual testing suite by cleaning up previous snapshot and diff output directories.
|
|
15
|
+
* When this command is run for the first time,
|
|
16
|
+
* it will remove the results and diffs directory of all suites.
|
|
17
|
+
*
|
|
18
|
+
* In subsequent runs, it will only remove the results and diffs directory of the current suite.
|
|
19
|
+
*/
|
|
20
|
+
setupVisSuite: () => Promise<Pick<VisOptions, 'comparisonMethod' | 'diffOptions' | 'failureThreshold' | 'failureThresholdType' | 'snapshotKey' | 'subject' | 'timeout'>>;
|
|
21
|
+
}
|
|
22
|
+
interface LoadImageSnapshotResultsCommand {
|
|
23
|
+
loadImageSnapshotResults(taskId: string): Promise<ImageSnapshotResult[]>;
|
|
24
|
+
}
|
|
25
|
+
interface ImageSnapshotResult {
|
|
26
|
+
filename: string;
|
|
27
|
+
/**
|
|
28
|
+
* The base64 encoded image of the baseline snapshot.
|
|
29
|
+
*/
|
|
30
|
+
baseline?: string | undefined;
|
|
31
|
+
/**
|
|
32
|
+
* The base64 encoded image of the result snapshot.
|
|
33
|
+
*/
|
|
34
|
+
result?: string | undefined;
|
|
35
|
+
/**
|
|
36
|
+
* The base64 encoded image of the diff snapshot.
|
|
37
|
+
*/
|
|
38
|
+
diff?: string | undefined;
|
|
39
|
+
}
|
|
40
|
+
interface HasImageSnapshotCommand {
|
|
41
|
+
hasImageSnapshot(taskId: string, snapshotKey: string | undefined): Promise<boolean>;
|
|
42
|
+
}
|
|
43
|
+
interface ImageSnapshotNextIndexCommand {
|
|
44
|
+
/**
|
|
45
|
+
* Get the index of the snapshot image to be created.
|
|
46
|
+
*/
|
|
47
|
+
imageSnapshotNextIndex(taskId: string): Promise<number>;
|
|
48
|
+
}
|
|
49
|
+
//#endregion
|
|
50
|
+
export { PrepareImageSnapshotComparisonCommand as a, LoadImageSnapshotResultsCommand as i, ImageSnapshotNextIndexCommand as n, PreparePageImageSnapshotComparisonCommand as o, ImageSnapshotResult as r, SetupVisSuiteCommand as s, HasImageSnapshotCommand as t };
|
|
51
|
+
//# sourceMappingURL=commands.types-BVhcnnHw.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.types-BVhcnnHw.d.mts","names":[],"sources":["../src/shared/commands.types.ts"],"sourcesContent":[],"mappings":";;;;;UAIiB,qCAAA;8EAIL,0CACN,QAAQ;AALd;AAIY,UAIK,yCAAA,CAJL;EACE,kCAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAMF,yBANE,GAAA,SAAA,EAAA,GAOR,OAPQ,CAOA,2BAPA,GAAA,SAAA,CAAA;;AAAD,UAUI,oBAAA,CAVJ;EAGI;;;;;AAOjB;;EASE,aAAA,EAAA,GAAA,GADoB,OACpB,CAAA,IAAA,CACC,UADD,EAAA,kBAAA,GAAA,aAAA,GAAA,kBAAA,GAAA,sBAAA,GAAA,aAAA,GAAA,SAAA,GAAA,SAAA,CAAA,CAAA;;AAD2B,UAcZ,+BAAA,CAdY;EAcZ,wBAAA,CAAA,MAAA,EAAA,MAA+B,CAAA,EACL,OAAQ,CAAA,mBAAR,EAAA,CAAA;AAG3C;AAgBiB,UAhBA,mBAAA,CAgBuB;EAIvB,QAAA,EAAA,MAAA;;;;;;;;;;;;;;UAJA,uBAAA;qEACmD;;UAGnD,6BAAA;;;;0CAIwB"}
|
package/dist/config.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as VisOptions } from "./types-
|
|
3
|
-
import { t as trimCommonFolder } from "./trim_common_folder-
|
|
1
|
+
import { d as PixelComparisonOptions, f as PixelDiffOptions, g as SsimDiffOptions, h as SsimComparisonOptions, n as ComparisonMethod } from "./types-CEmjj-A9.mjs";
|
|
2
|
+
import { t as VisOptions } from "./types-DJYCbyT8.mjs";
|
|
3
|
+
import { t as trimCommonFolder } from "./trim_common_folder-DBThLerp.mjs";
|
|
4
4
|
import * as vite0 from "vite";
|
|
5
5
|
|
|
6
6
|
//#region src/config/vis.d.ts
|
package/dist/config.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.mjs","names":["visOptions: Record<string, VisOptions<any> | undefined>","suites: VisSuites","visOptions","r: ImageSnapshotResult[]","r","visOptions","hasImageSnapshot: ExtendedBrowserCommand<Parameters<HasImageSnapshotCommand['hasImageSnapshot']>>","imageSnapshotNextIndex: ExtendedBrowserCommand<\n\tParameters<ImageSnapshotNextIndexCommand['imageSnapshotNextIndex']>\n>","loadImageSnapshotResults: ExtendedBrowserCommand<[taskId: string]>","mkdirp","writeFile","prepareImageSnapshotComparison: ExtendedBrowserCommand<\n\tParameters<PrepareImageSnapshotComparisonCommand['prepareImageSnapshotComparison']>\n>","preparePageImageSnapshotComparison: ExtendedBrowserCommand<\n\tParameters<PreparePageImageSnapshotComparisonCommand['preparePageImageSnapshotComparison']>\n>","setupVisSuite: ExtendedBrowserCommand<[]>"],"sources":["../src/server/externals/file.ts","../src/server/project.ts","../src/server/vis_options.ts","../src/server/vis_server_context.deps.ts","../src/server/suite.ts","../src/server/vis_server_context.logic.ts","../src/server/vis_server_context.ts","../src/server/commands/_assertions.ts","../src/server/commands/has_image_snapshot.ts","../src/server/commands/image_snapshot_next_index.ts","../src/server/commands/load_image_snapshot_results.ts","../src/server/browser_provider/playwright.ts","../src/server/browser_provider/webdriverio.ts","../src/server/browser_provider/browser_api.ts","../src/server/snapshot_writer.ts","../src/server/snapshot.ts","../src/server/commands/prepare_image_snapshot_comparison.ts","../src/server/commands/prepare_page_image_snapshot_comparison.ts","../src/server/commands/setup_vis_suite.ts","../src/server/commands/commands.ts","../src/config/vis.ts"],"sourcesContent":["import { glob, type GlobOptionsWithFileTypesUnset } from 'glob'\nimport { mkdirp } from 'mkdirp'\nimport { readFile, stat, writeFile } from 'node:fs/promises'\n\nexport const file = {\n\texistFile(filePath: string) {\n\t\treturn stat(filePath)\n\t\t\t.then((s) => s.isFile())\n\t\t\t.catch(() => false)\n\t},\n\tglob(pattern: string | string[], options?: GlobOptionsWithFileTypesUnset | undefined) {\n\t\treturn glob(pattern, options)\n\t},\n\tmkdirp: mkdirp as (path: string) => Promise<string | undefined>,\n\tasync tryReadFile(filePath: string | undefined): Promise<Buffer | undefined> {\n\t\tif (!filePath) return undefined\n\n\t\treturn readFile(filePath).catch(() => undefined)\n\t},\n\twriteFile,\n}\n","import type { ExtendedBrowserCommandContext } from './vis_server_context.types.ts'\n\nexport function getProjectName(context: ExtendedBrowserCommandContext) {\n\tconst { runner } = context.project\n\tconst name = runner.config.name\n\tif (typeof name === 'string') {\n\t\treturn name\n\t}\n\t// if (typeof name === 'object' && 'label' in name) {\n\t// \treturn (name as { label: string }).label\n\t// }\n\treturn undefined\n}\n\nexport function getProjectRoot(context: { project: { config: { root: string } } }) {\n\treturn context.project.config.root\n}\n","import type { TestUserConfig } from 'vitest/node'\nimport type { VisOptions } from '../config/types.ts'\nimport { assertSnapshotKeyWithoutDash } from '../shared/asserts.ts'\nimport { getProjectName } from './project.ts'\nimport type { ExtendedBrowserCommandContext } from './vis_server_context.types.ts'\n\nconst DEFAULT_PROJECT_NAME = '__default'\n\nconst visOptions: Record<string, VisOptions<any> | undefined> = {}\n\nexport function setVisOption(\n\tuserConfig: { test?: { name?: TestUserConfig['name'] | undefined } },\n\toptions: VisOptions<any> | undefined,\n) {\n\tassertSnapshotKeyWithoutDash(options?.snapshotKey)\n\n\tconst name = userConfig.test?.name\n\tconst id = typeof name === 'string' ? name : typeof name === 'object' ? name?.label : DEFAULT_PROJECT_NAME\n\tvisOptions[id] = options\n}\n\nexport function getVisOption(context: ExtendedBrowserCommandContext) {\n\tconst id = getProjectName(context) ?? DEFAULT_PROJECT_NAME\n\treturn visOptions[id] ?? {}\n}\n","/* v8 ignore start */\nimport ci from 'is-ci'\nimport { rimraf } from 'rimraf'\n\nexport const deps = {\n\trimraf,\n\tgetSnapshotPlatform() {\n\t\treturn ci ? process.platform : 'local'\n\t},\n}\n/* v8 ignore end */\n","import { join, relative } from 'pathe'\nimport type { VisOptions } from '../config/types.ts'\nimport { BASELINE_DIR, DIFF_DIR, RESULT_DIR } from '../shared/constants.ts'\nimport { getProjectName, getProjectRoot } from './project.ts'\nimport { getSnapshotSubpath, resolveSnapshotRootDir } from './snapshot_path.ts'\nimport { getVisOption } from './vis_options.ts'\nimport { deps } from './vis_server_context.deps.ts'\nimport type { ExtendedBrowserCommandContext, VisSuite, VisSuites } from './vis_server_context.types.ts'\n\nconst suites: VisSuites = {}\n\n/**\n * Setup suite is called on each test file's beforeAll hook.\n * Test files include vitest test files and storybook story files.\n * It needs to make sure there is no race condition between the test files.\n */\nexport async function setupSuite(browserContext: ExtendedBrowserCommandContext) {\n\tconst suiteId = getSuiteId(browserContext)\n\tconst visOptions = getVisOption(browserContext)\n\n\tif (!suites[suiteId]) {\n\t\tsuites[suiteId] = createSuite(browserContext, visOptions)\n\t}\n\n\tconst suite = await suites[suiteId]\n\n\tconst { taskSubpath, baselineDir, diffDir, resultDir, tasks } = createModule(\n\t\tsuite,\n\t\tbrowserContext.testPath!,\n\t\tvisOptions,\n\t)\n\tsuite.modules[taskSubpath] = { baselineDir, diffDir, resultDir, tasks }\n\n\tawait Promise.allSettled([deps.rimraf(diffDir), deps.rimraf(resultDir)])\n\treturn {\n\t\tcomparisonMethod: visOptions.comparisonMethod,\n\t\tdiffOptions: visOptions.diffOptions,\n\t\tfailureThreshold: visOptions.failureThreshold,\n\t\tfailureThresholdType: visOptions.failureThresholdType,\n\t\tsnapshotKey: visOptions.snapshotKey,\n\t\tsubject: visOptions.subject,\n\t\ttimeout: visOptions.timeout,\n\t}\n}\n\n/**\n * Suite ID also contains the project name to make it unique\n * across different projects.\n */\nexport function getSuiteId(context: ExtendedBrowserCommandContext) {\n\treturn `${getProjectName(context)}/${context.project.config.name}`\n}\n\nasync function createSuite(\n\tbrowserContext: ExtendedBrowserCommandContext,\n\tvisOptions: Pick<VisOptions, 'snapshotRootDir' | 'subject'>,\n) {\n\t// console.log('visOptions', visOptions)\n\tconst snapshotRootDir = resolveSnapshotRootDir(browserContext, visOptions)\n\tconst projectRoot = getProjectRoot(browserContext)\n\n\tconst state = {\n\t\tprojectRoot,\n\t\ttestTimeout: browserContext.project.config.testTimeout,\n\t\thookTimeout: browserContext.project.config.hookTimeout,\n\t\tsnapshotRootDir,\n\t\tsnapshotBaselineDir: join(snapshotRootDir, BASELINE_DIR),\n\t\tsnapshotResultDir: join(snapshotRootDir, RESULT_DIR),\n\t\tsnapshotDiffDir: join(snapshotRootDir, DIFF_DIR),\n\t\tsnapshotRootPath: join(projectRoot, snapshotRootDir),\n\t\tsubject: visOptions.subject,\n\t\tmodules: {},\n\t}\n\tawait Promise.allSettled([deps.rimraf(join(state.snapshotDiffDir)), deps.rimraf(join(state.snapshotResultDir))])\n\treturn state\n}\n\nexport function createModule(state: VisSuite, testPath: string, options: Pick<VisOptions, 'snapshotSubpath'>) {\n\tconst taskSubpath = getTaskSubpath(state, testPath, options)\n\treturn {\n\t\ttaskSubpath,\n\t\tbaselineDir: join(state.snapshotBaselineDir, taskSubpath),\n\t\tresultDir: join(state.snapshotResultDir, taskSubpath),\n\t\tdiffDir: join(state.snapshotDiffDir, taskSubpath),\n\t\ttasks: {},\n\t}\n}\n\nexport function getTaskSubpath(state: VisSuite, testPath: string, options: Pick<VisOptions, 'snapshotSubpath'>) {\n\treturn getSnapshotSubpath(relative(state.projectRoot, testPath), options)\n}\n\nexport function getSuite(context: ExtendedBrowserCommandContext) {\n\treturn suites[getSuiteId(context)]!\n}\n","import { basename, join, resolve } from 'pathe'\nimport { pick } from 'type-plus'\nimport type { ImageSnapshotKeyOptions } from '../client-api.ts'\nimport type { ImageSnapshotResult } from './commands/load_image_snapshot_results.ts'\nimport { file } from './externals/file.ts'\nimport { getSuite, getTaskSubpath } from './suite.ts'\nimport { getVisOption } from './vis_options.ts'\nimport type { ExtendedBrowserCommandContext } from './vis_server_context.types.ts'\n\nexport function createVisServerContext() {\n\tconst context = {\n\t\tasync getSnapshotResults(browserContext: ExtendedBrowserCommandContext, taskId: string) {\n\t\t\tconst suiteInfo = await context.getSuiteInfo(browserContext, taskId)\n\t\t\tconst baselines = await file.glob(join(suiteInfo.projectRoot, suiteInfo.baselineDir, `${suiteInfo.taskId}-*.png`))\n\t\t\tconst results = await file.glob(join(suiteInfo.projectRoot, suiteInfo.resultDir, `${suiteInfo.taskId}-*.png`))\n\t\t\tconst diffs = await file.glob(join(suiteInfo.projectRoot, suiteInfo.diffDir, `${suiteInfo.taskId}-*.png`))\n\n\t\t\tconst r: ImageSnapshotResult[] = []\n\t\t\tawait Promise.all(\n\t\t\t\tbaselines.map(async (baselinePath) => {\n\t\t\t\t\tconst filename = basename(baselinePath)\n\t\t\t\t\tconst resultPath = results.find((r) => r.endsWith(filename))\n\t\t\t\t\tconst diffPath = diffs.find((d) => d.endsWith(filename))\n\n\t\t\t\t\tconst baselineBuffer = await file.tryReadFile(baselinePath)\n\t\t\t\t\tconst resultBuffer = await file.tryReadFile(resultPath)\n\t\t\t\t\tconst diffBuffer = await file.tryReadFile(diffPath)\n\t\t\t\t\tr.push({\n\t\t\t\t\t\tfilename,\n\t\t\t\t\t\tbaseline: baselineBuffer?.toString('base64'),\n\t\t\t\t\t\tresult: resultBuffer?.toString('base64'),\n\t\t\t\t\t\tdiff: diffBuffer?.toString('base64'),\n\t\t\t\t\t})\n\t\t\t\t}),\n\t\t\t)\n\t\t\treturn r\n\t\t},\n\t\tasync getSnapshotInfo(\n\t\t\tbrowserContext: ExtendedBrowserCommandContext,\n\t\t\ttaskId: string,\n\t\t\toptions?: ImageSnapshotKeyOptions,\n\t\t) {\n\t\t\tconst suiteInfo = await context.getSuiteInfo(browserContext, taskId)\n\t\t\tconst snapshotFilename = context.getSnapshotFilename(browserContext, suiteInfo, options?.snapshotKey)\n\n\t\t\tconst { baselineDir, resultDir, diffDir, task } = suiteInfo\n\n\t\t\ttask.count = task.count + 1\n\t\t\tconst baselinePath = join(baselineDir, snapshotFilename)\n\t\t\tconst resultPath = join(resultDir, snapshotFilename)\n\t\t\tconst diffPath = join(diffDir, snapshotFilename)\n\n\t\t\treturn {\n\t\t\t\t...pick(\n\t\t\t\t\tgetVisOption(browserContext),\n\t\t\t\t\t'comparisonMethod',\n\t\t\t\t\t'diffOptions',\n\t\t\t\t\t'failureThreshold',\n\t\t\t\t\t'failureThresholdType',\n\t\t\t\t\t'timeout',\n\t\t\t\t),\n\t\t\t\tbaselinePath,\n\t\t\t\tresultPath,\n\t\t\t\tdiffPath,\n\t\t\t}\n\t\t},\n\n\t\tasync getTaskCount(browserContext: ExtendedBrowserCommandContext, taskId: string) {\n\t\t\treturn (await context.getSuiteInfo(browserContext, taskId)).task.count\n\t\t},\n\t\tasync hasImageSnapshot(\n\t\t\tbrowserContext: ExtendedBrowserCommandContext,\n\t\t\ttaskId: string,\n\t\t\tsnapshotKey: string | undefined,\n\t\t) {\n\t\t\tconst info = await context.getSuiteInfo(browserContext, taskId)\n\n\t\t\treturn file.existFile(\n\t\t\t\tresolve(info.projectRoot, info.baselineDir, context.getSnapshotFilename(browserContext, info, snapshotKey)),\n\t\t\t)\n\t\t},\n\t\tgetSnapshotFilename(\n\t\t\tbrowserContext: ExtendedBrowserCommandContext,\n\t\t\tinfo: { taskId: string; task: { count: number } },\n\t\t\tsnapshotKey: string | undefined,\n\t\t) {\n\t\t\tif (snapshotKey) return `${info.taskId}-${snapshotKey}.png`\n\t\t\tconst visOptions = getVisOption(browserContext)\n\t\t\tif (typeof visOptions.snapshotKey === 'string') {\n\t\t\t\treturn `${info.taskId}-${visOptions.snapshotKey}.png`\n\t\t\t}\n\t\t\treturn `${info.taskId}-${info.task.count}.png`\n\t\t},\n\t\tasync getSuiteInfo(browserContext: ExtendedBrowserCommandContext, taskId: string) {\n\t\t\tconst projectState = await getSuite(browserContext)\n\t\t\tconst visOptions = getVisOption(browserContext)\n\t\t\tconst moduleId = getTaskSubpath(projectState, browserContext.testPath, visOptions)\n\t\t\tconst m = projectState.modules[moduleId]!\n\t\t\tconst task = (m.tasks[taskId] = m.tasks[taskId] ?? { count: 1 })\n\t\t\treturn {\n\t\t\t\tprojectRoot: projectState.projectRoot,\n\t\t\t\tsuiteId: moduleId,\n\t\t\t\ttaskId,\n\t\t\t\tbaselineDir: m.baselineDir,\n\t\t\t\tresultDir: m.resultDir,\n\t\t\t\tdiffDir: m.diffDir,\n\t\t\t\ttask,\n\t\t\t}\n\t\t},\n\t}\n\treturn context\n}\n","import { createVisServerContext } from './vis_server_context.logic.ts'\n\nexport const visServerContext = createVisServerContext()\n","import { isAbsolute } from 'pathe'\nimport type { RequiredPick } from 'type-plus'\nimport type { ExtendedBrowserCommandContext } from '../vis_server_context.types.ts'\n\nexport function assertTestPathDefined(\n\tcontext: ExtendedBrowserCommandContext,\n\tcommandName: string,\n): asserts context is RequiredPick<ExtendedBrowserCommandContext, 'testPath'> {\n\tif (!context.testPath) {\n\t\tthrow new Error(`'commands.${commandName}' requires testPath to be defined`)\n\t}\n}\n\nexport function assertIsRelativePath(relativeFilePath: string, propName: string) {\n\tif (isAbsolute(relativeFilePath)) {\n\t\tthrow new Error(`'${propName}' must be a relative path`)\n\t}\n}\n","import { visServerContext } from '../vis_server_context.ts'\nimport type { ExtendedBrowserCommand } from '../vis_server_context.types.ts'\nimport { assertTestPathDefined } from './_assertions.ts'\n\nexport interface HasImageSnapshotCommand {\n\thasImageSnapshot(taskId: string, snapshotKey: string | undefined): Promise<boolean>\n}\n\nexport const hasImageSnapshot: ExtendedBrowserCommand<Parameters<HasImageSnapshotCommand['hasImageSnapshot']>> = async (\n\tcontext,\n\ttaskId,\n\tsnapshotKey,\n) => {\n\tassertTestPathDefined(context, 'hasImageSnapshot')\n\n\treturn visServerContext.hasImageSnapshot(context as any, taskId, snapshotKey)\n}\n","import { visServerContext } from '../vis_server_context.ts'\nimport type { ExtendedBrowserCommand } from '../vis_server_context.types.ts'\nimport { assertTestPathDefined } from './_assertions.ts'\n\nexport interface ImageSnapshotNextIndexCommand {\n\t/**\n\t * Get the index of the snapshot image to be created.\n\t */\n\timageSnapshotNextIndex(taskId: string): Promise<number>\n}\n\nexport const imageSnapshotNextIndex: ExtendedBrowserCommand<\n\tParameters<ImageSnapshotNextIndexCommand['imageSnapshotNextIndex']>\n> = async (context, taskId) => {\n\tassertTestPathDefined(context, 'imageSnapshotNextIndex')\n\n\treturn visServerContext.getTaskCount(context, taskId)\n}\n","import { visServerContext } from '../vis_server_context.ts'\nimport type { ExtendedBrowserCommand } from '../vis_server_context.types.ts'\nimport { assertTestPathDefined } from './_assertions.ts'\n\nexport interface ImageSnapshotResult {\n\tfilename: string\n\t/**\n\t * The base64 encoded image of the baseline snapshot.\n\t */\n\tbaseline?: string | undefined\n\t/**\n\t * The base64 encoded image of the result snapshot.\n\t */\n\tresult?: string | undefined\n\t/**\n\t * The base64 encoded image of the diff snapshot.\n\t */\n\tdiff?: string | undefined\n}\n\nexport interface LoadImageSnapshotResultsCommand {\n\tloadImageSnapshotResults(taskId: string): Promise<ImageSnapshotResult[]>\n}\n\nexport const loadImageSnapshotResults: ExtendedBrowserCommand<[taskId: string]> = async (\n\tcontext,\n\ttaskId,\n): Promise<ImageSnapshotResult[]> => {\n\tassertTestPathDefined(context, 'loadImageSnapshotResults')\n\treturn visServerContext.getSnapshotResults(context, taskId)\n}\n","import { resolve } from 'pathe'\nimport type { ExtendedBrowserCommandContext } from '../vis_server_context.types.ts'\nimport type { BrowserApi } from './types.ts'\n\nexport function playwright(context: ExtendedBrowserCommandContext): BrowserApi {\n\tconst { page, iframe } = context\n\n\treturn {\n\t\tasync takeScreenshot(projectRoot, relativeFilePath, selector, options) {\n\t\t\tconst subject = iframe.locator(selector)\n\t\t\treturn subject.screenshot({\n\t\t\t\tpath: resolve(projectRoot, relativeFilePath),\n\t\t\t\t...options,\n\t\t\t})\n\t\t},\n\t\tasync takePageScreenshot(projectRoot, relativeFilePath, options) {\n\t\t\treturn page.screenshot({\n\t\t\t\tpath: resolve(projectRoot, relativeFilePath),\n\t\t\t\t...options,\n\t\t\t})\n\t\t},\n\t}\n}\n","import type { ExtendedBrowserCommandContext } from '../vis_server_context.types.ts'\nimport type { BrowserApi } from './types.ts'\n\nexport function webdriverio(context: ExtendedBrowserCommandContext): BrowserApi {\n\tconst { browser } = context\n\treturn {\n\t\tasync takeScreenshot(_projectRoot, relativeFilePath, selector) {\n\t\t\tconst element = await browser.$(`${selector}`)\n\t\t\treturn element.saveScreenshot(relativeFilePath)\n\t\t},\n\t\tasync takePageScreenshot(_projectRoot, relativeFilePath, options) {\n\t\t\treturn browser.saveScreenshot(relativeFilePath, options)\n\t\t},\n\t}\n}\n","import type { ExtendedBrowserCommandContext } from '../vis_server_context.types.ts'\nimport { playwright } from './playwright.ts'\nimport { webdriverio } from './webdriverio.ts'\n\nexport function browserApi(context: ExtendedBrowserCommandContext) {\n\tif (context.provider.name === 'playwright') {\n\t\treturn playwright(context)\n\t}\n\tif (context.provider.name === 'webdriverio') {\n\t\treturn webdriverio(context)\n\t}\n\tthrow new Error(`Unsupported provider: ${context.provider.name}`)\n}\n","import { dirname } from 'pathe'\nimport { file } from './externals/file.ts'\n\nexport interface SnapshotWriter {\n\twriteBase64(filePath: string, data: string): Promise<void>\n\twriteBuffer(filePath: string, data: Buffer): Promise<void>\n}\n\nexport function createSnapshotWriter({ mkdirp, writeFile } = file): SnapshotWriter {\n\treturn {\n\t\tasync writeBase64(filePath: string, data: string) {\n\t\t\tawait mkdirp(dirname(filePath))\n\t\t\tawait writeFile(filePath, data, { encoding: 'base64' })\n\t\t},\n\t\tasync writeBuffer(filePath, data) {\n\t\t\tawait mkdirp(dirname(filePath))\n\t\t\tawait writeFile(filePath, data)\n\t\t},\n\t}\n}\n\nexport const snapshotWriter = createSnapshotWriter()\n","import { mkdirp } from 'mkdirp'\nimport { dirname, resolve } from 'pathe'\nimport { isBase64String } from '../shared/base64.ts'\nimport type { ImageSnapshotTimeoutOptions, PageImageSnapshotOptions } from '../shared/types.ts'\nimport { browserApi } from './browser_provider/browser_api.ts'\nimport { snapshotWriter } from './snapshot_writer.ts'\nimport type { ExtendedBrowserCommandContext } from './vis_server_context.types.ts'\n\nexport async function takeSnapshot(\n\tcontext: ExtendedBrowserCommandContext,\n\tprojectRoot: string,\n\trelativeFilePath: string,\n\tsubject: string,\n\toptions: ImageSnapshotTimeoutOptions | undefined,\n) {\n\tif (isBase64String(subject)) {\n\t\tawait snapshotWriter.writeBase64(resolve(projectRoot, relativeFilePath), subject)\n\t\treturn Buffer.from(subject, 'base64')\n\t}\n\treturn takeSnapshotByBrowser(context, projectRoot, relativeFilePath, subject, options)\n}\n\nexport async function takeSnapshotByBrowser(\n\tcontext: ExtendedBrowserCommandContext,\n\tprojectRoot: string,\n\trelativeFilePath: string,\n\tsubject: string,\n\toptions: ImageSnapshotTimeoutOptions | undefined,\n) {\n\tconst filePath = resolve(projectRoot, relativeFilePath)\n\tawait mkdirp(dirname(filePath))\n\tconst browser = browserApi(context)\n\treturn browser.takeScreenshot(projectRoot, relativeFilePath, subject ?? 'body', {\n\t\ttimeout: options?.timeout,\n\t})\n}\n\nexport async function takePageSnapshot(\n\tcontext: ExtendedBrowserCommandContext,\n\tprojectRoot: string,\n\trelativeFilePath: string,\n\toptions: (PageImageSnapshotOptions & ImageSnapshotTimeoutOptions) | undefined,\n) {\n\tconst filePath = resolve(projectRoot, relativeFilePath)\n\tawait mkdirp(dirname(filePath))\n\tconst browser = browserApi(context)\n\treturn browser.takePageScreenshot(projectRoot, relativeFilePath, {\n\t\ttimeout: options?.timeout,\n\t\tfullPage: options?.fullPage,\n\t})\n}\n","import { resolve } from 'pathe'\nimport { isBase64String } from '../../shared/base64.ts'\nimport type {\n\tFailureThresholdOptions,\n\tImageSnapshotTimeoutOptions,\n\tPixelComparisonOptions,\n\tSsimComparisonOptions,\n} from '../../shared/types.ts'\nimport { file } from '../externals/file.ts'\nimport { getProjectRoot } from '../project.ts'\nimport { takeSnapshot, takeSnapshotByBrowser } from '../snapshot.ts'\nimport { snapshotWriter } from '../snapshot_writer.ts'\nimport { visServerContext } from '../vis_server_context.ts'\nimport type { ExtendedBrowserCommand } from '../vis_server_context.types.ts'\nimport { assertTestPathDefined } from './_assertions.ts'\nimport type { MatchImageSnapshotOptions } from './types.ts'\n\nexport type ImageSnapshotComparisonInfo = {\n\t/**\n\t * Path to the project root.\n\t */\n\tprojectRoot: string\n\t/**\n\t * Path to the baseline image relative to the project root.\n\t */\n\tbaselinePath: string\n\t/**\n\t * Path to the result image relative to the project root.\n\t */\n\tresultPath: string\n\t/**\n\t * Path to the diff image relative to the project root.\n\t */\n\tdiffPath: string\n\t/**\n\t * Base64 encoded baseline image.\n\t */\n\tbaseline: string\n\t/**\n\t * Base64 encoded result image.\n\t */\n\tresult: string\n\t/**\n\t * Base64 encoded diff image.\n\t */\n\tdiff?: string | undefined\n} & ImageSnapshotTimeoutOptions &\n\tFailureThresholdOptions &\n\t(SsimComparisonOptions | PixelComparisonOptions)\n\nexport interface PrepareImageSnapshotComparisonCommand {\n\tprepareImageSnapshotComparison: (\n\t\ttaskId: string,\n\t\tsubject: string,\n\t\toptions?: MatchImageSnapshotOptions | undefined,\n\t) => Promise<ImageSnapshotComparisonInfo | undefined>\n}\n\nexport const prepareImageSnapshotComparison: ExtendedBrowserCommand<\n\tParameters<PrepareImageSnapshotComparisonCommand['prepareImageSnapshotComparison']>\n> = async (context, taskId, subject, options): Promise<ImageSnapshotComparisonInfo | undefined> => {\n\tassertTestPathDefined(context, 'prepareImageSnapshotComparison')\n\t// vitest:browser passes in `null` when not defined\n\tif (!options) options = {}\n\toptions.timeout = options.timeout ?? 30000\n\n\tconst projectRoot = getProjectRoot(context)\n\tconst info = await visServerContext.getSnapshotInfo(context, taskId, options)\n\n\tconst baselineBuffer = await file.tryReadFile(resolve(projectRoot, info.baselinePath))\n\tif (!baselineBuffer) {\n\t\tif (isBase64String(subject)) {\n\t\t\tawait snapshotWriter.writeBase64(resolve(projectRoot, info.baselinePath), subject)\n\t\t} else {\n\t\t\tawait takeSnapshotByBrowser(context, projectRoot, info.baselinePath, subject, options)\n\t\t}\n\t\treturn\n\t}\n\n\tconst resultBuffer = await takeSnapshot(context, projectRoot, info.resultPath, subject, options)\n\treturn {\n\t\t...info,\n\t\tprojectRoot,\n\t\tbaseline: baselineBuffer.toString('base64'),\n\t\tresult: resultBuffer.toString('base64'),\n\t}\n}\n","import { resolve } from 'pathe'\nimport type {\n\tFailureThresholdOptions,\n\tImageSnapshotTimeoutOptions,\n\tPixelComparisonOptions,\n\tSsimComparisonOptions,\n} from '../../shared/types.ts'\nimport { file } from '../externals/file.ts'\nimport { getProjectRoot } from '../project.ts'\nimport { takePageSnapshot } from '../snapshot.ts'\nimport { visServerContext } from '../vis_server_context.ts'\nimport type { ExtendedBrowserCommand } from '../vis_server_context.types.ts'\nimport { assertTestPathDefined } from './_assertions.ts'\nimport type { MatchImageSnapshotOptions } from './types.ts'\n\ntype ImageSnapshotComparisonInfo = {\n\t/**\n\t * Path to the project root.\n\t */\n\tprojectRoot: string\n\t/**\n\t * Path to the baseline image relative to the project root.\n\t */\n\tbaselinePath: string\n\t/**\n\t * Path to the result image relative to the project root.\n\t */\n\tresultPath: string\n\t/**\n\t * Path to the diff image relative to the project root.\n\t */\n\tdiffPath: string\n\t/**\n\t * Base64 encoded baseline image.\n\t */\n\tbaseline: string\n\t/**\n\t * Base64 encoded result image.\n\t */\n\tresult: string\n} & ImageSnapshotTimeoutOptions &\n\tFailureThresholdOptions &\n\t(SsimComparisonOptions | PixelComparisonOptions)\n\nexport interface PreparePageImageSnapshotComparisonCommand {\n\tpreparePageImageSnapshotComparison: (\n\t\ttaskId: string,\n\t\toptions?: MatchImageSnapshotOptions | undefined,\n\t) => Promise<ImageSnapshotComparisonInfo | undefined>\n}\n\nexport const preparePageImageSnapshotComparison: ExtendedBrowserCommand<\n\tParameters<PreparePageImageSnapshotComparisonCommand['preparePageImageSnapshotComparison']>\n> = async (context, taskId, options) => {\n\tassertTestPathDefined(context, 'preparePageImageSnapshotComparison')\n\t// vitest:browser passes in `null` when not defined\n\tif (!options) options = {}\n\toptions.timeout = options.timeout ?? 30000\n\n\tconst projectRoot = getProjectRoot(context)\n\tconst info = await visServerContext.getSnapshotInfo(context, taskId, options)\n\tconst baselineBuffer = await file.tryReadFile(resolve(projectRoot, info.baselinePath))\n\tif (!baselineBuffer) {\n\t\tawait takePageSnapshot(context, projectRoot, info.baselinePath, options)\n\t\treturn\n\t}\n\n\tconst resultBuffer = await takePageSnapshot(context, projectRoot, info.resultPath, options)\n\treturn {\n\t\t...info,\n\t\tprojectRoot,\n\t\tbaseline: baselineBuffer.toString('base64'),\n\t\tresult: resultBuffer.toString('base64'),\n\t}\n}\n","import type { Pick } from 'type-plus'\nimport type { VisOptions } from '../../config/types.ts'\nimport { setupSuite } from '../suite.ts'\nimport type { ExtendedBrowserCommand, ExtendedBrowserCommandContext } from '../vis_server_context.types.ts'\nimport { assertTestPathDefined } from './_assertions.ts'\n\nexport interface SetupVisSuiteCommand {\n\t/**\n\t * Sets up the visual testing suite by cleaning up previous snapshot and diff output directories.\n\t * When this command is run for the first time,\n\t * it will remove the results and diffs directory of all suites.\n\t *\n\t * In subsequent runs, it will only remove the results and diffs directory of the current suite.\n\t */\n\tsetupVisSuite: () => Promise<\n\t\tPick<\n\t\t\tVisOptions,\n\t\t\t| 'comparisonMethod'\n\t\t\t| 'diffOptions'\n\t\t\t| 'failureThreshold'\n\t\t\t| 'failureThresholdType'\n\t\t\t| 'snapshotKey'\n\t\t\t| 'subject'\n\t\t\t| 'timeout'\n\t\t>\n\t>\n}\n\nexport const setupVisSuite: ExtendedBrowserCommand<[]> = async (context): Promise<{ subject: string | undefined }> => {\n\tassertTestPathDefined(context, 'setupVisSuite')\n\treturn setupSuite(context as unknown as ExtendedBrowserCommandContext)\n}\n","import { hasImageSnapshot } from './has_image_snapshot.ts'\nimport { imageSnapshotNextIndex } from './image_snapshot_next_index.ts'\nimport { loadImageSnapshotResults } from './load_image_snapshot_results.ts'\nimport { prepareImageSnapshotComparison } from './prepare_image_snapshot_comparison.ts'\nimport { preparePageImageSnapshotComparison } from './prepare_page_image_snapshot_comparison.ts'\nimport { setupVisSuite } from './setup_vis_suite.ts'\n\nexport const commands = {\n\tsetupVisSuite,\n\timageSnapshotNextIndex,\n\thasImageSnapshot,\n\tpreparePageImageSnapshotComparison,\n\tprepareImageSnapshotComparison,\n\tloadImageSnapshotResults,\n}\n","import type { Plugin } from 'vitest/config'\nimport { commands } from '../server/commands/commands.ts'\nimport { setVisOption } from '../server/vis_options.ts'\nimport { NAME } from '../shared/constants.ts'\nimport type { ComparisonMethod } from '../shared/types.ts'\nimport type { VisOptions } from './types.ts'\n\n/**\n * Create a Vite plugin for visual testing.\n *\n * If options are not provided, the plugin will use the default options,\n * which enables the `auto` preset.\n */\nexport function vis<M extends ComparisonMethod = 'pixel'>(options: VisOptions<M> = { preset: 'auto' } as any) {\n\treturn {\n\t\tname: NAME,\n\t\tconfig(this: unknown, userConfig) {\n\t\t\tsetVisOption(userConfig, options)\n\t\t\tconst preset = options?.preset\n\t\t\treturn {\n\t\t\t\ttest: {\n\t\t\t\t\tbrowser: {\n\t\t\t\t\t\tname: undefined,\n\t\t\t\t\t\tcommands: commands as any,\n\t\t\t\t\t},\n\t\t\t\t\tsetupFiles: preset && preset !== 'none' && preset !== 'custom' ? [`vitest-plugin-vis/presets/${preset}`] : [],\n\t\t\t\t},\n\t\t\t}\n\t\t},\n\t} satisfies Plugin\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.mjs","names":["visOptions: Record<string, VisOptions<any> | undefined>","suites: VisSuites","visOptions","r: ImageSnapshotResult[]","r","visOptions","hasImageSnapshot: ExtendedBrowserCommand<Parameters<HasImageSnapshotCommand['hasImageSnapshot']>>","imageSnapshotNextIndex: ExtendedBrowserCommand<\n\tParameters<ImageSnapshotNextIndexCommand['imageSnapshotNextIndex']>\n>","loadImageSnapshotResults: ExtendedBrowserCommand<[taskId: string]>","mkdirp","writeFile","prepareImageSnapshotComparison: ExtendedBrowserCommand<\n\tParameters<PrepareImageSnapshotComparisonCommand['prepareImageSnapshotComparison']>\n>","preparePageImageSnapshotComparison: ExtendedBrowserCommand<\n\tParameters<PreparePageImageSnapshotComparisonCommand['preparePageImageSnapshotComparison']>\n>","setupVisSuite: ExtendedBrowserCommand<[]>"],"sources":["../src/server/externals/file.ts","../src/server/project.ts","../src/server/vis_options.ts","../src/server/vis_server_context.deps.ts","../src/server/suite.ts","../src/server/vis_server_context.logic.ts","../src/server/vis_server_context.ts","../src/server/commands/_assertions.ts","../src/server/commands/has_image_snapshot.ts","../src/server/commands/image_snapshot_next_index.ts","../src/server/commands/load_image_snapshot_results.ts","../src/server/browser_provider/playwright.ts","../src/server/browser_provider/webdriverio.ts","../src/server/browser_provider/browser_api.ts","../src/server/snapshot_writer.ts","../src/server/snapshot.ts","../src/server/commands/prepare_image_snapshot_comparison.ts","../src/server/commands/prepare_page_image_snapshot_comparison.ts","../src/server/commands/setup_vis_suite.ts","../src/server/commands/commands.ts","../src/config/vis.ts"],"sourcesContent":["import { glob, type GlobOptionsWithFileTypesUnset } from 'glob'\nimport { mkdirp } from 'mkdirp'\nimport { readFile, stat, writeFile } from 'node:fs/promises'\n\nexport const file = {\n\texistFile(filePath: string) {\n\t\treturn stat(filePath)\n\t\t\t.then((s) => s.isFile())\n\t\t\t.catch(() => false)\n\t},\n\tglob(pattern: string | string[], options?: GlobOptionsWithFileTypesUnset | undefined) {\n\t\treturn glob(pattern, options)\n\t},\n\tmkdirp: mkdirp as (path: string) => Promise<string | undefined>,\n\tasync tryReadFile(filePath: string | undefined): Promise<Buffer | undefined> {\n\t\tif (!filePath) return undefined\n\n\t\treturn readFile(filePath).catch(() => undefined)\n\t},\n\twriteFile,\n}\n","import type { ExtendedBrowserCommandContext } from './vis_server_context.types.ts'\n\nexport function getProjectName(context: ExtendedBrowserCommandContext) {\n\tconst { runner } = context.project\n\tconst name = runner.config.name\n\tif (typeof name === 'string') {\n\t\treturn name\n\t}\n\t// if (typeof name === 'object' && 'label' in name) {\n\t// \treturn (name as { label: string }).label\n\t// }\n\treturn undefined\n}\n\nexport function getProjectRoot(context: { project: { config: { root: string } } }) {\n\treturn context.project.config.root\n}\n","import type { TestUserConfig } from 'vitest/node'\nimport type { VisOptions } from '../config/types.ts'\nimport { assertSnapshotKeyWithoutDash } from '../shared/asserts.ts'\nimport { getProjectName } from './project.ts'\nimport type { ExtendedBrowserCommandContext } from './vis_server_context.types.ts'\n\nconst DEFAULT_PROJECT_NAME = '__default'\n\nconst visOptions: Record<string, VisOptions<any> | undefined> = {}\n\nexport function setVisOption(\n\tuserConfig: { test?: { name?: TestUserConfig['name'] | undefined } },\n\toptions: VisOptions<any> | undefined,\n) {\n\tassertSnapshotKeyWithoutDash(options?.snapshotKey)\n\n\tconst name = userConfig.test?.name\n\tconst id = typeof name === 'string' ? name : typeof name === 'object' ? name?.label : DEFAULT_PROJECT_NAME\n\tvisOptions[id] = options\n}\n\nexport function getVisOption(context: ExtendedBrowserCommandContext) {\n\tconst id = getProjectName(context) ?? DEFAULT_PROJECT_NAME\n\treturn visOptions[id] ?? {}\n}\n","/* v8 ignore start */\nimport ci from 'is-ci'\nimport { rimraf } from 'rimraf'\n\nexport const deps = {\n\trimraf,\n\tgetSnapshotPlatform() {\n\t\treturn ci ? process.platform : 'local'\n\t},\n}\n/* v8 ignore end */\n","import { join, relative } from 'pathe'\nimport type { VisOptions } from '../config/types.ts'\nimport { BASELINE_DIR, DIFF_DIR, RESULT_DIR } from '../shared/constants.ts'\nimport { getProjectName, getProjectRoot } from './project.ts'\nimport { getSnapshotSubpath, resolveSnapshotRootDir } from './snapshot_path.ts'\nimport { getVisOption } from './vis_options.ts'\nimport { deps } from './vis_server_context.deps.ts'\nimport type { ExtendedBrowserCommandContext, VisSuite, VisSuites } from './vis_server_context.types.ts'\n\nconst suites: VisSuites = {}\n\n/**\n * Setup suite is called on each test file's beforeAll hook.\n * Test files include vitest test files and storybook story files.\n * It needs to make sure there is no race condition between the test files.\n */\nexport async function setupSuite(browserContext: ExtendedBrowserCommandContext) {\n\tconst suiteId = getSuiteId(browserContext)\n\tconst visOptions = getVisOption(browserContext)\n\n\tif (!suites[suiteId]) {\n\t\tsuites[suiteId] = createSuite(browserContext, visOptions)\n\t}\n\n\tconst suite = await suites[suiteId]\n\n\tconst { taskSubpath, baselineDir, diffDir, resultDir, tasks } = createModule(\n\t\tsuite,\n\t\tbrowserContext.testPath!,\n\t\tvisOptions,\n\t)\n\tsuite.modules[taskSubpath] = { baselineDir, diffDir, resultDir, tasks }\n\n\tawait Promise.allSettled([deps.rimraf(diffDir), deps.rimraf(resultDir)])\n\treturn {\n\t\tcomparisonMethod: visOptions.comparisonMethod,\n\t\tdiffOptions: visOptions.diffOptions,\n\t\tfailureThreshold: visOptions.failureThreshold,\n\t\tfailureThresholdType: visOptions.failureThresholdType,\n\t\tsnapshotKey: visOptions.snapshotKey,\n\t\tsubject: visOptions.subject,\n\t\ttimeout: visOptions.timeout,\n\t}\n}\n\n/**\n * Suite ID also contains the project name to make it unique\n * across different projects.\n */\nexport function getSuiteId(context: ExtendedBrowserCommandContext) {\n\treturn `${getProjectName(context)}/${context.project.config.name}`\n}\n\nasync function createSuite(\n\tbrowserContext: ExtendedBrowserCommandContext,\n\tvisOptions: Pick<VisOptions, 'snapshotRootDir' | 'subject'>,\n) {\n\t// console.log('visOptions', visOptions)\n\tconst snapshotRootDir = resolveSnapshotRootDir(browserContext, visOptions)\n\tconst projectRoot = getProjectRoot(browserContext)\n\n\tconst state = {\n\t\tprojectRoot,\n\t\ttestTimeout: browserContext.project.config.testTimeout,\n\t\thookTimeout: browserContext.project.config.hookTimeout,\n\t\tsnapshotRootDir,\n\t\tsnapshotBaselineDir: join(snapshotRootDir, BASELINE_DIR),\n\t\tsnapshotResultDir: join(snapshotRootDir, RESULT_DIR),\n\t\tsnapshotDiffDir: join(snapshotRootDir, DIFF_DIR),\n\t\tsnapshotRootPath: join(projectRoot, snapshotRootDir),\n\t\tsubject: visOptions.subject,\n\t\tmodules: {},\n\t}\n\tawait Promise.allSettled([deps.rimraf(join(state.snapshotDiffDir)), deps.rimraf(join(state.snapshotResultDir))])\n\treturn state\n}\n\nexport function createModule(state: VisSuite, testPath: string, options: Pick<VisOptions, 'snapshotSubpath'>) {\n\tconst taskSubpath = getTaskSubpath(state, testPath, options)\n\treturn {\n\t\ttaskSubpath,\n\t\tbaselineDir: join(state.snapshotBaselineDir, taskSubpath),\n\t\tresultDir: join(state.snapshotResultDir, taskSubpath),\n\t\tdiffDir: join(state.snapshotDiffDir, taskSubpath),\n\t\ttasks: {},\n\t}\n}\n\nexport function getTaskSubpath(state: VisSuite, testPath: string, options: Pick<VisOptions, 'snapshotSubpath'>) {\n\treturn getSnapshotSubpath(relative(state.projectRoot, testPath), options)\n}\n\nexport function getSuite(context: ExtendedBrowserCommandContext) {\n\treturn suites[getSuiteId(context)]!\n}\n","import { basename, join, resolve } from 'pathe'\nimport { pick } from 'type-plus'\nimport type { ImageSnapshotKeyOptions } from '../client-api.ts'\nimport type { ImageSnapshotResult } from '../shared/commands.types.ts'\nimport { file } from './externals/file.ts'\nimport { getSuite, getTaskSubpath } from './suite.ts'\nimport { getVisOption } from './vis_options.ts'\nimport type { ExtendedBrowserCommandContext } from './vis_server_context.types.ts'\n\nexport function createVisServerContext() {\n\tconst context = {\n\t\tasync getSnapshotResults(browserContext: ExtendedBrowserCommandContext, taskId: string) {\n\t\t\tconst suiteInfo = await context.getSuiteInfo(browserContext, taskId)\n\t\t\tconst baselines = await file.glob(join(suiteInfo.projectRoot, suiteInfo.baselineDir, `${suiteInfo.taskId}-*.png`))\n\t\t\tconst results = await file.glob(join(suiteInfo.projectRoot, suiteInfo.resultDir, `${suiteInfo.taskId}-*.png`))\n\t\t\tconst diffs = await file.glob(join(suiteInfo.projectRoot, suiteInfo.diffDir, `${suiteInfo.taskId}-*.png`))\n\n\t\t\tconst r: ImageSnapshotResult[] = []\n\t\t\tawait Promise.all(\n\t\t\t\tbaselines.map(async (baselinePath) => {\n\t\t\t\t\tconst filename = basename(baselinePath)\n\t\t\t\t\tconst resultPath = results.find((r) => r.endsWith(filename))\n\t\t\t\t\tconst diffPath = diffs.find((d) => d.endsWith(filename))\n\n\t\t\t\t\tconst baselineBuffer = await file.tryReadFile(baselinePath)\n\t\t\t\t\tconst resultBuffer = await file.tryReadFile(resultPath)\n\t\t\t\t\tconst diffBuffer = await file.tryReadFile(diffPath)\n\t\t\t\t\tr.push({\n\t\t\t\t\t\tfilename,\n\t\t\t\t\t\tbaseline: baselineBuffer?.toString('base64'),\n\t\t\t\t\t\tresult: resultBuffer?.toString('base64'),\n\t\t\t\t\t\tdiff: diffBuffer?.toString('base64'),\n\t\t\t\t\t})\n\t\t\t\t}),\n\t\t\t)\n\t\t\treturn r\n\t\t},\n\t\tasync getSnapshotInfo(\n\t\t\tbrowserContext: ExtendedBrowserCommandContext,\n\t\t\ttaskId: string,\n\t\t\toptions?: ImageSnapshotKeyOptions,\n\t\t) {\n\t\t\tconst suiteInfo = await context.getSuiteInfo(browserContext, taskId)\n\t\t\tconst snapshotFilename = context.getSnapshotFilename(browserContext, suiteInfo, options?.snapshotKey)\n\n\t\t\tconst { baselineDir, resultDir, diffDir, task } = suiteInfo\n\n\t\t\ttask.count = task.count + 1\n\t\t\tconst baselinePath = join(baselineDir, snapshotFilename)\n\t\t\tconst resultPath = join(resultDir, snapshotFilename)\n\t\t\tconst diffPath = join(diffDir, snapshotFilename)\n\n\t\t\treturn {\n\t\t\t\t...pick(\n\t\t\t\t\tgetVisOption(browserContext),\n\t\t\t\t\t'comparisonMethod',\n\t\t\t\t\t'diffOptions',\n\t\t\t\t\t'failureThreshold',\n\t\t\t\t\t'failureThresholdType',\n\t\t\t\t\t'timeout',\n\t\t\t\t),\n\t\t\t\tbaselinePath,\n\t\t\t\tresultPath,\n\t\t\t\tdiffPath,\n\t\t\t}\n\t\t},\n\n\t\tasync getTaskCount(browserContext: ExtendedBrowserCommandContext, taskId: string) {\n\t\t\treturn (await context.getSuiteInfo(browserContext, taskId)).task.count\n\t\t},\n\t\tasync hasImageSnapshot(\n\t\t\tbrowserContext: ExtendedBrowserCommandContext,\n\t\t\ttaskId: string,\n\t\t\tsnapshotKey: string | undefined,\n\t\t) {\n\t\t\tconst info = await context.getSuiteInfo(browserContext, taskId)\n\n\t\t\treturn file.existFile(\n\t\t\t\tresolve(info.projectRoot, info.baselineDir, context.getSnapshotFilename(browserContext, info, snapshotKey)),\n\t\t\t)\n\t\t},\n\t\tgetSnapshotFilename(\n\t\t\tbrowserContext: ExtendedBrowserCommandContext,\n\t\t\tinfo: { taskId: string; task: { count: number } },\n\t\t\tsnapshotKey: string | undefined,\n\t\t) {\n\t\t\tif (snapshotKey) return `${info.taskId}-${snapshotKey}.png`\n\t\t\tconst visOptions = getVisOption(browserContext)\n\t\t\tif (typeof visOptions.snapshotKey === 'string') {\n\t\t\t\treturn `${info.taskId}-${visOptions.snapshotKey}.png`\n\t\t\t}\n\t\t\treturn `${info.taskId}-${info.task.count}.png`\n\t\t},\n\t\tasync getSuiteInfo(browserContext: ExtendedBrowserCommandContext, taskId: string) {\n\t\t\tconst projectState = await getSuite(browserContext)\n\t\t\tconst visOptions = getVisOption(browserContext)\n\t\t\tconst moduleId = getTaskSubpath(projectState, browserContext.testPath, visOptions)\n\t\t\tconst m = projectState.modules[moduleId]!\n\t\t\tconst task = (m.tasks[taskId] = m.tasks[taskId] ?? { count: 1 })\n\t\t\treturn {\n\t\t\t\tprojectRoot: projectState.projectRoot,\n\t\t\t\tsuiteId: moduleId,\n\t\t\t\ttaskId,\n\t\t\t\tbaselineDir: m.baselineDir,\n\t\t\t\tresultDir: m.resultDir,\n\t\t\t\tdiffDir: m.diffDir,\n\t\t\t\ttask,\n\t\t\t}\n\t\t},\n\t}\n\treturn context\n}\n","import { createVisServerContext } from './vis_server_context.logic.ts'\n\nexport const visServerContext = createVisServerContext()\n","import { isAbsolute } from 'pathe'\nimport type { RequiredPick } from 'type-plus'\nimport type { ExtendedBrowserCommandContext } from '../vis_server_context.types.ts'\n\nexport function assertTestPathDefined(\n\tcontext: ExtendedBrowserCommandContext,\n\tcommandName: string,\n): asserts context is RequiredPick<ExtendedBrowserCommandContext, 'testPath'> {\n\tif (!context.testPath) {\n\t\tthrow new Error(`'commands.${commandName}' requires testPath to be defined`)\n\t}\n}\n\nexport function assertIsRelativePath(relativeFilePath: string, propName: string) {\n\tif (isAbsolute(relativeFilePath)) {\n\t\tthrow new Error(`'${propName}' must be a relative path`)\n\t}\n}\n","import type { HasImageSnapshotCommand } from '../../shared/commands.types.ts'\nimport { visServerContext } from '../vis_server_context.ts'\nimport type { ExtendedBrowserCommand } from '../vis_server_context.types.ts'\nimport { assertTestPathDefined } from './_assertions.ts'\n\nexport const hasImageSnapshot: ExtendedBrowserCommand<Parameters<HasImageSnapshotCommand['hasImageSnapshot']>> = async (\n\tcontext,\n\ttaskId,\n\tsnapshotKey,\n) => {\n\tassertTestPathDefined(context, 'hasImageSnapshot')\n\n\treturn visServerContext.hasImageSnapshot(context as any, taskId, snapshotKey)\n}\n","import type { ImageSnapshotNextIndexCommand } from '../../shared/commands.types.ts'\nimport { visServerContext } from '../vis_server_context.ts'\nimport type { ExtendedBrowserCommand } from '../vis_server_context.types.ts'\nimport { assertTestPathDefined } from './_assertions.ts'\n\nexport const imageSnapshotNextIndex: ExtendedBrowserCommand<\n\tParameters<ImageSnapshotNextIndexCommand['imageSnapshotNextIndex']>\n> = async (context, taskId) => {\n\tassertTestPathDefined(context, 'imageSnapshotNextIndex')\n\n\treturn visServerContext.getTaskCount(context, taskId)\n}\n","import type { ImageSnapshotResult } from '../../shared/commands.types.ts'\nimport { visServerContext } from '../vis_server_context.ts'\nimport type { ExtendedBrowserCommand } from '../vis_server_context.types.ts'\nimport { assertTestPathDefined } from './_assertions.ts'\n\nexport const loadImageSnapshotResults: ExtendedBrowserCommand<[taskId: string]> = async (\n\tcontext,\n\ttaskId,\n): Promise<ImageSnapshotResult[]> => {\n\tassertTestPathDefined(context, 'loadImageSnapshotResults')\n\treturn visServerContext.getSnapshotResults(context, taskId)\n}\n","import { resolve } from 'pathe'\nimport type { ExtendedBrowserCommandContext } from '../vis_server_context.types.ts'\nimport type { BrowserApi } from './types.ts'\n\nexport function playwright(context: ExtendedBrowserCommandContext): BrowserApi {\n\tconst { page, iframe } = context\n\n\treturn {\n\t\tasync takeScreenshot(projectRoot, relativeFilePath, selector, options) {\n\t\t\tconst subject = iframe.locator(selector)\n\t\t\treturn subject.screenshot({\n\t\t\t\tpath: resolve(projectRoot, relativeFilePath),\n\t\t\t\t...options,\n\t\t\t})\n\t\t},\n\t\tasync takePageScreenshot(projectRoot, relativeFilePath, options) {\n\t\t\treturn page.screenshot({\n\t\t\t\tpath: resolve(projectRoot, relativeFilePath),\n\t\t\t\t...options,\n\t\t\t})\n\t\t},\n\t}\n}\n","import type { ExtendedBrowserCommandContext } from '../vis_server_context.types.ts'\nimport type { BrowserApi } from './types.ts'\n\nexport function webdriverio(context: ExtendedBrowserCommandContext): BrowserApi {\n\tconst { browser } = context\n\treturn {\n\t\tasync takeScreenshot(_projectRoot, relativeFilePath, selector) {\n\t\t\tconst element = await browser.$(`${selector}`)\n\t\t\treturn element.saveScreenshot(relativeFilePath)\n\t\t},\n\t\tasync takePageScreenshot(_projectRoot, relativeFilePath, options) {\n\t\t\treturn browser.saveScreenshot(relativeFilePath, options)\n\t\t},\n\t}\n}\n","import type { ExtendedBrowserCommandContext } from '../vis_server_context.types.ts'\nimport { playwright } from './playwright.ts'\nimport { webdriverio } from './webdriverio.ts'\n\nexport function browserApi(context: ExtendedBrowserCommandContext) {\n\tif (context.provider.name === 'playwright') {\n\t\treturn playwright(context)\n\t}\n\tif (context.provider.name === 'webdriverio') {\n\t\treturn webdriverio(context)\n\t}\n\tthrow new Error(`Unsupported provider: ${context.provider.name}`)\n}\n","import { dirname } from 'pathe'\nimport { file } from './externals/file.ts'\n\nexport interface SnapshotWriter {\n\twriteBase64(filePath: string, data: string): Promise<void>\n\twriteBuffer(filePath: string, data: Buffer): Promise<void>\n}\n\nexport function createSnapshotWriter({ mkdirp, writeFile } = file): SnapshotWriter {\n\treturn {\n\t\tasync writeBase64(filePath: string, data: string) {\n\t\t\tawait mkdirp(dirname(filePath))\n\t\t\tawait writeFile(filePath, data, { encoding: 'base64' })\n\t\t},\n\t\tasync writeBuffer(filePath, data) {\n\t\t\tawait mkdirp(dirname(filePath))\n\t\t\tawait writeFile(filePath, data)\n\t\t},\n\t}\n}\n\nexport const snapshotWriter = createSnapshotWriter()\n","import { mkdirp } from 'mkdirp'\nimport { dirname, resolve } from 'pathe'\nimport { isBase64String } from '../shared/base64.ts'\nimport type { ImageSnapshotTimeoutOptions, PageImageSnapshotOptions } from '../shared/types.ts'\nimport { browserApi } from './browser_provider/browser_api.ts'\nimport { snapshotWriter } from './snapshot_writer.ts'\nimport type { ExtendedBrowserCommandContext } from './vis_server_context.types.ts'\n\nexport async function takeSnapshot(\n\tcontext: ExtendedBrowserCommandContext,\n\tprojectRoot: string,\n\trelativeFilePath: string,\n\tsubject: string,\n\toptions: ImageSnapshotTimeoutOptions | undefined,\n) {\n\tif (isBase64String(subject)) {\n\t\tawait snapshotWriter.writeBase64(resolve(projectRoot, relativeFilePath), subject)\n\t\treturn Buffer.from(subject, 'base64')\n\t}\n\treturn takeSnapshotByBrowser(context, projectRoot, relativeFilePath, subject, options)\n}\n\nexport async function takeSnapshotByBrowser(\n\tcontext: ExtendedBrowserCommandContext,\n\tprojectRoot: string,\n\trelativeFilePath: string,\n\tsubject: string,\n\toptions: ImageSnapshotTimeoutOptions | undefined,\n) {\n\tconst filePath = resolve(projectRoot, relativeFilePath)\n\tawait mkdirp(dirname(filePath))\n\tconst browser = browserApi(context)\n\treturn browser.takeScreenshot(projectRoot, relativeFilePath, subject ?? 'body', {\n\t\ttimeout: options?.timeout,\n\t})\n}\n\nexport async function takePageSnapshot(\n\tcontext: ExtendedBrowserCommandContext,\n\tprojectRoot: string,\n\trelativeFilePath: string,\n\toptions: (PageImageSnapshotOptions & ImageSnapshotTimeoutOptions) | undefined,\n) {\n\tconst filePath = resolve(projectRoot, relativeFilePath)\n\tawait mkdirp(dirname(filePath))\n\tconst browser = browserApi(context)\n\treturn browser.takePageScreenshot(projectRoot, relativeFilePath, {\n\t\ttimeout: options?.timeout,\n\t\tfullPage: options?.fullPage,\n\t})\n}\n","import { resolve } from 'pathe'\nimport { isBase64String } from '../../shared/base64.ts'\nimport type { PrepareImageSnapshotComparisonCommand } from '../../shared/commands.types.ts'\nimport type { ImageSnapshotComparisonInfo } from '../../shared/types.ts'\nimport { file } from '../externals/file.ts'\nimport { getProjectRoot } from '../project.ts'\nimport { takeSnapshot, takeSnapshotByBrowser } from '../snapshot.ts'\nimport { snapshotWriter } from '../snapshot_writer.ts'\nimport { visServerContext } from '../vis_server_context.ts'\nimport type { ExtendedBrowserCommand } from '../vis_server_context.types.ts'\nimport { assertTestPathDefined } from './_assertions.ts'\n\nexport const prepareImageSnapshotComparison: ExtendedBrowserCommand<\n\tParameters<PrepareImageSnapshotComparisonCommand['prepareImageSnapshotComparison']>\n> = async (context, taskId, subject, options): Promise<ImageSnapshotComparisonInfo | undefined> => {\n\tassertTestPathDefined(context, 'prepareImageSnapshotComparison')\n\t// vitest:browser passes in `null` when not defined\n\tif (!options) options = {}\n\toptions.timeout = options.timeout ?? 30000\n\n\tconst projectRoot = getProjectRoot(context)\n\tconst info = await visServerContext.getSnapshotInfo(context, taskId, options)\n\n\tconst baselineBuffer = await file.tryReadFile(resolve(projectRoot, info.baselinePath))\n\tif (!baselineBuffer) {\n\t\tif (isBase64String(subject)) {\n\t\t\tawait snapshotWriter.writeBase64(resolve(projectRoot, info.baselinePath), subject)\n\t\t} else {\n\t\t\tawait takeSnapshotByBrowser(context, projectRoot, info.baselinePath, subject, options)\n\t\t}\n\t\treturn\n\t}\n\n\tconst resultBuffer = await takeSnapshot(context, projectRoot, info.resultPath, subject, options)\n\treturn {\n\t\t...info,\n\t\tprojectRoot,\n\t\tbaseline: baselineBuffer.toString('base64'),\n\t\tresult: resultBuffer.toString('base64'),\n\t}\n}\n","import { resolve } from 'pathe'\nimport type { PreparePageImageSnapshotComparisonCommand } from '../../shared/commands.types.ts'\nimport { file } from '../externals/file.ts'\nimport { getProjectRoot } from '../project.ts'\nimport { takePageSnapshot } from '../snapshot.ts'\nimport { visServerContext } from '../vis_server_context.ts'\nimport type { ExtendedBrowserCommand } from '../vis_server_context.types.ts'\nimport { assertTestPathDefined } from './_assertions.ts'\n\nexport const preparePageImageSnapshotComparison: ExtendedBrowserCommand<\n\tParameters<PreparePageImageSnapshotComparisonCommand['preparePageImageSnapshotComparison']>\n> = async (context, taskId, options) => {\n\tassertTestPathDefined(context, 'preparePageImageSnapshotComparison')\n\t// vitest:browser passes in `null` when not defined\n\tif (!options) options = {}\n\toptions.timeout = options.timeout ?? 30000\n\n\tconst projectRoot = getProjectRoot(context)\n\tconst info = await visServerContext.getSnapshotInfo(context, taskId, options)\n\tconst baselineBuffer = await file.tryReadFile(resolve(projectRoot, info.baselinePath))\n\tif (!baselineBuffer) {\n\t\tawait takePageSnapshot(context, projectRoot, info.baselinePath, options)\n\t\treturn\n\t}\n\n\tconst resultBuffer = await takePageSnapshot(context, projectRoot, info.resultPath, options)\n\treturn {\n\t\t...info,\n\t\tprojectRoot,\n\t\tbaseline: baselineBuffer.toString('base64'),\n\t\tresult: resultBuffer.toString('base64'),\n\t}\n}\n","import { setupSuite } from '../suite.ts'\nimport type { ExtendedBrowserCommand, ExtendedBrowserCommandContext } from '../vis_server_context.types.ts'\nimport { assertTestPathDefined } from './_assertions.ts'\n\nexport const setupVisSuite: ExtendedBrowserCommand<[]> = async (context): Promise<{ subject: string | undefined }> => {\n\tassertTestPathDefined(context, 'setupVisSuite')\n\treturn setupSuite(context as unknown as ExtendedBrowserCommandContext)\n}\n","import { hasImageSnapshot } from './has_image_snapshot.ts'\nimport { imageSnapshotNextIndex } from './image_snapshot_next_index.ts'\nimport { loadImageSnapshotResults } from './load_image_snapshot_results.ts'\nimport { prepareImageSnapshotComparison } from './prepare_image_snapshot_comparison.ts'\nimport { preparePageImageSnapshotComparison } from './prepare_page_image_snapshot_comparison.ts'\nimport { setupVisSuite } from './setup_vis_suite.ts'\n\nexport const commands = {\n\tsetupVisSuite,\n\timageSnapshotNextIndex,\n\thasImageSnapshot,\n\tpreparePageImageSnapshotComparison,\n\tprepareImageSnapshotComparison,\n\tloadImageSnapshotResults,\n}\n","import type { Plugin } from 'vitest/config'\nimport { commands } from '../server/commands/commands.ts'\nimport { setVisOption } from '../server/vis_options.ts'\nimport { NAME } from '../shared/constants.ts'\nimport type { ComparisonMethod } from '../shared/types.ts'\nimport type { VisOptions } from './types.ts'\n\n/**\n * Create a Vite plugin for visual testing.\n *\n * If options are not provided, the plugin will use the default options,\n * which enables the `auto` preset.\n */\nexport function vis<M extends ComparisonMethod = 'pixel'>(options: VisOptions<M> = { preset: 'auto' } as any) {\n\treturn {\n\t\tname: NAME,\n\t\tconfig(this: unknown, userConfig) {\n\t\t\tsetVisOption(userConfig, options)\n\t\t\tconst preset = options?.preset\n\t\t\treturn {\n\t\t\t\ttest: {\n\t\t\t\t\tbrowser: {\n\t\t\t\t\t\tname: undefined,\n\t\t\t\t\t\tcommands: commands as any,\n\t\t\t\t\t},\n\t\t\t\t\tsetupFiles: preset && preset !== 'none' && preset !== 'custom' ? [`vitest-plugin-vis/presets/${preset}`] : [],\n\t\t\t\t},\n\t\t\t}\n\t\t},\n\t} satisfies Plugin\n}\n"],"mappings":"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"}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as
|
|
2
|
-
import
|
|
3
|
-
import "./
|
|
4
|
-
import "./augment-
|
|
5
|
-
export { Awaitable, ComparisonMethod, FailureThresholdOptions, ImageSnapshotCompareOptions, ImageSnapshotKeyOptions, ImageSnapshotSubjectOptions, ImageSnapshotTimeoutOptions, type MetaTask, PageImageSnapshotOptions, PixelComparisonOptions, PixelDiffOptions, SnapshotTestMeta, SsimComparisonOptions, SsimDiffOptions, ToMatchImageSnapshotOptions, ToMatchPageImageSnapshotOptions, setAutoSnapshotOptions };
|
|
1
|
+
import { _ as ToMatchImageSnapshotOptions, a as ImageSnapshotComparisonInfo, c as ImageSnapshotTimeoutOptions, d as PixelComparisonOptions, f as PixelDiffOptions, g as SsimDiffOptions, h as SsimComparisonOptions, i as ImageSnapshotCompareOptions, l as MatchImageSnapshotOptions, m as SnapshotTestMeta, n as ComparisonMethod, o as ImageSnapshotKeyOptions, p as SetupVisOptions, r as FailureThresholdOptions, s as ImageSnapshotSubjectOptions, t as Awaitable, u as PageImageSnapshotOptions, v as ToMatchPageImageSnapshotOptions } from "./types-CEmjj-A9.mjs";
|
|
2
|
+
import "./to_match_image_snapshot.types--tTmHoRA.mjs";
|
|
3
|
+
import { n as setAutoSnapshotOptions, t as MetaTask } from "./auto_snapshot_options-BMRtKmod.mjs";
|
|
4
|
+
import "./augment-C1tjdh5B.mjs";
|
|
5
|
+
export { Awaitable, ComparisonMethod, FailureThresholdOptions, ImageSnapshotCompareOptions, ImageSnapshotComparisonInfo, ImageSnapshotKeyOptions, ImageSnapshotSubjectOptions, ImageSnapshotTimeoutOptions, MatchImageSnapshotOptions, type MetaTask, PageImageSnapshotOptions, PixelComparisonOptions, PixelDiffOptions, SetupVisOptions, SnapshotTestMeta, SsimComparisonOptions, SsimDiffOptions, ToMatchImageSnapshotOptions, ToMatchPageImageSnapshotOptions, setAutoSnapshotOptions };
|
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "./asserts--HSSlgPD.mjs";
|
|
2
2
|
import "./constants-CTBaz8Ml.mjs";
|
|
3
|
-
import { n as setAutoSnapshotOptions } from "./auto_snapshot_options-
|
|
3
|
+
import { n as setAutoSnapshotOptions } from "./auto_snapshot_options-DUOTpF2N.mjs";
|
|
4
4
|
import "./src-CSQnlFa9.mjs";
|
|
5
5
|
|
|
6
6
|
export { setAutoSnapshotOptions };
|
package/dist/presets/auto.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import "../asserts--HSSlgPD.mjs";
|
|
2
2
|
import "../constants-CTBaz8Ml.mjs";
|
|
3
|
-
import { n as setAutoSnapshotOptions } from "../auto_snapshot_options-
|
|
3
|
+
import { n as setAutoSnapshotOptions } from "../auto_snapshot_options-DUOTpF2N.mjs";
|
|
4
4
|
import "../src-CSQnlFa9.mjs";
|
|
5
5
|
import "../base64-CHSENEAO.mjs";
|
|
6
|
-
import "../
|
|
7
|
-
import { t as vis } from "../setup-
|
|
6
|
+
import "../auto_snapshot_matcher-C0y6mAeS.mjs";
|
|
7
|
+
import { t as vis } from "../setup-DCytWz48.mjs";
|
|
8
8
|
import { afterEach, beforeAll } from "vitest";
|
|
9
9
|
|
|
10
10
|
//#region src/presets/auto.ts
|
package/dist/presets/enable.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import "../asserts--HSSlgPD.mjs";
|
|
2
2
|
import "../constants-CTBaz8Ml.mjs";
|
|
3
|
-
import "../auto_snapshot_options-
|
|
3
|
+
import "../auto_snapshot_options-DUOTpF2N.mjs";
|
|
4
4
|
import "../base64-CHSENEAO.mjs";
|
|
5
|
-
import "../
|
|
6
|
-
import { t as vis } from "../setup-
|
|
5
|
+
import "../auto_snapshot_matcher-C0y6mAeS.mjs";
|
|
6
|
+
import { t as vis } from "../setup-DCytWz48.mjs";
|
|
7
7
|
import { afterEach, beforeAll } from "vitest";
|
|
8
8
|
|
|
9
9
|
//#region src/presets/enable.ts
|
package/dist/presets/manual.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import "../asserts--HSSlgPD.mjs";
|
|
2
2
|
import "../constants-CTBaz8Ml.mjs";
|
|
3
|
-
import "../auto_snapshot_options-
|
|
3
|
+
import "../auto_snapshot_options-DUOTpF2N.mjs";
|
|
4
4
|
import "../base64-CHSENEAO.mjs";
|
|
5
|
-
import "../
|
|
6
|
-
import { t as vis } from "../setup-
|
|
5
|
+
import "../auto_snapshot_matcher-C0y6mAeS.mjs";
|
|
6
|
+
import { t as vis } from "../setup-DCytWz48.mjs";
|
|
7
7
|
import { afterEach, beforeAll } from "vitest";
|
|
8
8
|
|
|
9
9
|
//#region src/presets/manual.ts
|
package/dist/server-utils.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import "./
|
|
3
|
-
import "./
|
|
4
|
-
import
|
|
1
|
+
import { C as SNAPSHOT_ROOT_DIR, S as RESULT_DIR, b as DIFF_DIR, x as NAME, y as BASELINE_DIR } from "./types-CEmjj-A9.mjs";
|
|
2
|
+
import "./types-DJYCbyT8.mjs";
|
|
3
|
+
import { t as trimCommonFolder } from "./trim_common_folder-DBThLerp.mjs";
|
|
4
|
+
import "type-plus";
|
|
5
5
|
|
|
6
6
|
//#region src/server/snapshot_path.d.ts
|
|
7
7
|
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { n as setAutoSnapshotOptions, r as getCurrentTest } from "./auto_snapshot_options-DUOTpF2N.mjs";
|
|
2
|
+
import { a as matchImageSnapshotAction, i as matchPageImageSnapshotAction, n as toTaskId, o as hasImageSnapshotAction, r as success, t as autoSnapshotMatcher } from "./auto_snapshot_matcher-C0y6mAeS.mjs";
|
|
3
|
+
import { afterEach, beforeAll, expect } from "vitest";
|
|
4
|
+
import { commands, page } from "vitest/browser";
|
|
5
|
+
|
|
6
|
+
//#region src/client/expect/_ctx.ts
|
|
7
|
+
const ctx$1 = {
|
|
8
|
+
commands,
|
|
9
|
+
getCurrentTest,
|
|
10
|
+
__test__reset() {
|
|
11
|
+
ctx$1.getCurrentTest = getCurrentTest;
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
16
|
+
//#region src/client/expect/to_match_image_snapshot.ts
|
|
17
|
+
function toMatchImageSnapshot$1(subject, options) {
|
|
18
|
+
const test = ctx$1.getCurrentTest();
|
|
19
|
+
if (!test) throw new Error("`toMatchImageSnapshot()` must be called in a test.");
|
|
20
|
+
if (test.concurrent) throw new Error("`toMatchImageSnapshot()` cannot be called in a concurrent test because concurrent tests run at the same time in the same iframe and affect each other's environment.");
|
|
21
|
+
return matchImageSnapshotAction(ctx$1.commands, toTaskId(test), subject, options).then(() => success);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
//#endregion
|
|
25
|
+
//#region src/client/expect/extend.ts
|
|
26
|
+
expect.extend({ toMatchImageSnapshot: toMatchImageSnapshot$1 });
|
|
27
|
+
|
|
28
|
+
//#endregion
|
|
29
|
+
//#region src/client/page/_ctx.ts
|
|
30
|
+
const ctx = {
|
|
31
|
+
commands,
|
|
32
|
+
getCurrentTest,
|
|
33
|
+
__test__reset() {
|
|
34
|
+
ctx.getCurrentTest = getCurrentTest;
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
//#endregion
|
|
39
|
+
//#region src/client/page/has_image_snapshot.ts
|
|
40
|
+
function hasImageSnapshot(options) {
|
|
41
|
+
const test = ctx.getCurrentTest();
|
|
42
|
+
if (!test) throw new Error("`hasImageSnapshot()` must be called in a test.");
|
|
43
|
+
if (test.concurrent) throw new Error("`hasImageSnapshot()` cannot be called in a concurrent test because concurrent tests run at the same time in the same iframe and affect each other's environment. ");
|
|
44
|
+
return hasImageSnapshotAction(ctx.commands, toTaskId(test), options);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
//#endregion
|
|
48
|
+
//#region src/client/page/to_match_image_snapshot.ts
|
|
49
|
+
function toMatchImageSnapshot(options) {
|
|
50
|
+
const test = ctx.getCurrentTest();
|
|
51
|
+
if (!test) throw new Error("`toMatchImageSnapshot()` must be called in a test.");
|
|
52
|
+
if (test.concurrent) throw new Error("`toMatchImageSnapshot()` cannot be called in a concurrent test because concurrent tests run at the same time in the same iframe and affect each other's environment.");
|
|
53
|
+
return matchPageImageSnapshotAction(ctx.commands, toTaskId(test), options);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
//#endregion
|
|
57
|
+
//#region src/client/page/extend.ts
|
|
58
|
+
page.extend({
|
|
59
|
+
hasImageSnapshot,
|
|
60
|
+
toMatchImageSnapshot
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
//#endregion
|
|
64
|
+
//#region src/setup/create_vis.ts
|
|
65
|
+
function createVis(commands$1) {
|
|
66
|
+
const matcher = autoSnapshotMatcher(commands$1, expect);
|
|
67
|
+
return {
|
|
68
|
+
setup(options) {
|
|
69
|
+
if (!options || options.auto === false) beforeAll(matcher.setup);
|
|
70
|
+
else beforeAll(async () => {
|
|
71
|
+
await matcher.setup();
|
|
72
|
+
setAutoSnapshotOptions(true);
|
|
73
|
+
});
|
|
74
|
+
if (typeof options?.auto === "function") afterEach(matcher.createMatcher({ auto: options.auto }));
|
|
75
|
+
else if (typeof options?.auto === "object") afterEach(matcher.createMatcher(options.auto));
|
|
76
|
+
else afterEach(matcher.createMatcher({ async auto() {} }));
|
|
77
|
+
},
|
|
78
|
+
presets: {
|
|
79
|
+
enable() {
|
|
80
|
+
beforeAll(matcher.setup);
|
|
81
|
+
afterEach(matcher.createMatcher({ async auto() {} }));
|
|
82
|
+
},
|
|
83
|
+
manual() {
|
|
84
|
+
beforeAll(matcher.setup);
|
|
85
|
+
},
|
|
86
|
+
auto() {
|
|
87
|
+
beforeAll(async () => {
|
|
88
|
+
await matcher.setup();
|
|
89
|
+
setAutoSnapshotOptions(true);
|
|
90
|
+
});
|
|
91
|
+
afterEach(matcher.createMatcher({ async auto() {} }));
|
|
92
|
+
},
|
|
93
|
+
theme(themes) {
|
|
94
|
+
beforeAll(async () => {
|
|
95
|
+
await matcher.setup();
|
|
96
|
+
setAutoSnapshotOptions(true);
|
|
97
|
+
});
|
|
98
|
+
afterEach(matcher.createMatcher(themes));
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
beforeAll: { async setup() {
|
|
102
|
+
await matcher.setup();
|
|
103
|
+
} },
|
|
104
|
+
afterEach: {
|
|
105
|
+
async matchImageSnapshot() {
|
|
106
|
+
return matcher.createMatcher({ async auto() {} })();
|
|
107
|
+
},
|
|
108
|
+
matchPerTheme(themes) {
|
|
109
|
+
return matcher.createMatcher(themes);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
//#endregion
|
|
116
|
+
//#region src/setup/vis.ts
|
|
117
|
+
/**
|
|
118
|
+
* Visual test configuration on the client side.
|
|
119
|
+
*/
|
|
120
|
+
const vis = createVis(commands);
|
|
121
|
+
|
|
122
|
+
//#endregion
|
|
123
|
+
export { createVis as n, vis as t };
|
|
124
|
+
//# sourceMappingURL=setup-DCytWz48.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-DCytWz48.mjs","names":["ctx","toMatchImageSnapshot","ctx","commands"],"sources":["../src/client/expect/_ctx.ts","../src/client/expect/to_match_image_snapshot.ts","../src/client/expect/extend.ts","../src/client/page/_ctx.ts","../src/client/page/has_image_snapshot.ts","../src/client/page/to_match_image_snapshot.ts","../src/client/page/extend.ts","../src/setup/create_vis.ts","../src/setup/vis.ts"],"sourcesContent":["import { commands } from 'vitest/browser'\nimport { getCurrentTest } from '../external/vitest/vitest_suite_proxy.ts'\n\nexport const ctx = {\n\tcommands,\n\tgetCurrentTest,\n\t__test__reset() {\n\t\tctx.getCurrentTest = getCurrentTest\n\t},\n}\n","import type { AsyncExpectationResult } from '@vitest/expect'\nimport type { ToMatchImageSnapshotOptions } from '../../shared/types.ts'\nimport { matchImageSnapshotAction } from '../actions/match_image_snapshot_action.ts'\nimport { toTaskId } from '../task/task_id.ts'\nimport { ctx } from './_ctx.ts'\nimport { success } from './expectation_result.ts'\n\nexport function toMatchImageSnapshot(\n\t/**\n\t * The element or locator to take the snapshot of,\n\t * or the base64 value of the image to compare against.\n\t */\n\tsubject: any,\n\toptions?: ToMatchImageSnapshotOptions | undefined,\n): AsyncExpectationResult {\n\tconst test = ctx.getCurrentTest()\n\tif (!test) {\n\t\tthrow new Error('`toMatchImageSnapshot()` must be called in a test.')\n\t}\n\n\tif (test.concurrent) {\n\t\tthrow new Error(\n\t\t\t'`toMatchImageSnapshot()` cannot be called in a concurrent test because ' +\n\t\t\t\t\"concurrent tests run at the same time in the same iframe and affect each other's environment.\",\n\t\t)\n\t}\n\n\treturn matchImageSnapshotAction(ctx.commands, toTaskId(test), subject, options).then(() => success)\n}\n","import { expect } from 'vitest'\nimport { toMatchImageSnapshot } from './to_match_image_snapshot.ts'\nimport './augment.ts'\n\nexpect.extend({ toMatchImageSnapshot })\n","import { type BrowserPage, commands } from 'vitest/browser'\nimport { getCurrentTest } from '../external/vitest/vitest_suite_proxy.ts'\n\nexport type { BrowserPage }\n\nexport const ctx = {\n\tcommands,\n\tgetCurrentTest,\n\t__test__reset() {\n\t\tctx.getCurrentTest = getCurrentTest\n\t},\n}\n","import type { ImageSnapshotKeyOptions } from '../../shared/types.ts'\nimport { hasImageSnapshotAction } from '../actions/has_image_snapshot_action.ts'\nimport { toTaskId } from '../task/task_id.ts'\nimport type { BrowserPage } from './_ctx.ts'\nimport { ctx } from './_ctx.ts'\n\nexport interface HasImageSnapshotAction {\n\t/**\n\t * Check if the snapshot image exists.\n\t */\n\thasImageSnapshot(this: BrowserPage, options?: ImageSnapshotKeyOptions | undefined): Promise<boolean>\n}\n\nexport function hasImageSnapshot(this: BrowserPage, options?: ImageSnapshotKeyOptions | undefined) {\n\tconst test = ctx.getCurrentTest()\n\tif (!test) {\n\t\tthrow new Error('`hasImageSnapshot()` must be called in a test.')\n\t}\n\n\tif (test.concurrent) {\n\t\tthrow new Error(\n\t\t\t'`hasImageSnapshot()` cannot be called in a concurrent test because ' +\n\t\t\t\t\"concurrent tests run at the same time in the same iframe and affect each other's environment. \",\n\t\t)\n\t}\n\treturn hasImageSnapshotAction(ctx.commands, toTaskId(test), options)\n}\n","import type { ComparisonMethod, ToMatchPageImageSnapshotOptions } from '../../shared/types.ts'\nimport { matchPageImageSnapshotAction } from '../actions/match_page_image_snapshot_action.ts'\nimport { toTaskId } from '../task/task_id.ts'\nimport { ctx } from './_ctx.ts'\n\nexport interface ToMatchImageSnapshotAction {\n\ttoMatchImageSnapshot<M extends ComparisonMethod = 'pixel'>(\n\t\toptions?: ToMatchPageImageSnapshotOptions<M> | undefined,\n\t): Promise<void>\n}\n\nexport function toMatchImageSnapshot<M extends ComparisonMethod = 'pixel'>(\n\toptions?: ToMatchPageImageSnapshotOptions<M> | undefined,\n) {\n\tconst test = ctx.getCurrentTest()\n\tif (!test) {\n\t\tthrow new Error('`toMatchImageSnapshot()` must be called in a test.')\n\t}\n\n\tif (test.concurrent) {\n\t\tthrow new Error(\n\t\t\t'`toMatchImageSnapshot()` cannot be called in a concurrent test because ' +\n\t\t\t\t\"concurrent tests run at the same time in the same iframe and affect each other's environment.\",\n\t\t)\n\t}\n\n\treturn matchPageImageSnapshotAction(ctx.commands, toTaskId(test), options)\n}\n","import { page } from 'vitest/browser'\nimport './augment.ts'\nimport { hasImageSnapshot } from './has_image_snapshot.ts'\nimport { toMatchImageSnapshot } from './to_match_image_snapshot.ts'\n\npage.extend({ hasImageSnapshot, toMatchImageSnapshot })\n","import { afterEach, beforeAll, expect } from 'vitest'\nimport { autoSnapshotMatcher } from '../client/suite/auto_snapshot_matcher.ts'\nimport { setAutoSnapshotOptions } from '../client/task/auto_snapshot_options.ts'\nimport type { SnapshotMeta } from '../client/task/snapshot_meta.ts'\nimport type { SetupVisSuiteCommand } from '../shared/commands.types.ts'\nimport type { ComparisonMethod, SetupVisOptions } from '../shared/types.ts'\n\n/**\n * Visual test configuration on the client side.\n */\nexport type VisClientConfigurator<GM extends Record<string, any> | unknown = unknown> = {\n\t/**\n\t * Setup the visual test configuration.\n\t *\n\t * @example\n\t * ```ts\n\t * // Setup with auto snapshot enabled\n\t * vis().setup({ auto: true })\n\t *\n\t * // Setup with auto snapshot disabled\n\t * vis().setup({ auto: false })\n\t *\n\t * // Same as `vis.setup({ auto: false })`\n\t * vis.setup()\n\t *\n\t * // Setup with auto snapshot determined by the test meta\n\t * vis.setup({\n\t * \tauto: async ({ meta }) => meta['darkOnly'],\n\t * })\n\t *\n\t * // Setup with multiple auto snapshots\n\t * vis.setup({\n\t * auto: {\n\t * async light() { document.body.classList.remove('dark') },\n\t * async dark() { document.body.classList.add('dark') },\n\t * }\n\t * })\n\t * ```\n\t */\n\tsetup(options?: SetupVisOptions<GM>): void\n\t/**\n\t * @deprecated Use `vis.setup()` instead.\n\t */\n\tpresets: {\n\t\t/**\n\t\t * @deprecated Use `vis.setup()` instead.\n\t\t *\n\t\t * Enable visual testing.\n\t\t *\n\t\t * auto snapshot is turned off by default.\n\t\t * You can specify the test to take a snapshot during `afterEach()` hook with `setAutoSnapshotOptions()`.\n\t\t */\n\t\tenable(): void\n\t\t/**\n\t\t * @deprecated Use `vis.setup()` instead.\n\t\t *\n\t\t * Enable visual testing.\n\t\t *\n\t\t * `setAutoSnapshotOptions` will have no effect in this preset.\n\t\t */\n\t\tmanual(): void\n\t\t/**\n\t\t * @deprecated Use `vis.setup()` instead.\n\t\t *\n\t\t * Enable automatic visual testing.\n\t\t *\n\t\t * This will take a snapshot after each test.\n\t\t */\n\t\tauto(): void\n\t\t/**\n\t\t * @deprecated Use `vis.setup()` instead.\n\t\t *\n\t\t * Enable automatic visual testing with multiple themes.\n\t\t *\n\t\t * This will take a snapshot after each test for each theme.\n\t\t *\n\t\t * @param themes A record of theme names and their setup functions.\n\t\t *\n\t\t * @example\n\t\t * ```ts\n\t\t * vis().presets.theme({\n\t\t * light() { document.body.classList.add('light') },\n\t\t * dark() { document.body.classList.add('dark') },\n\t\t * })\n\t\t * ```\n\t\t */\n\t\ttheme<C extends ComparisonMethod, M extends Record<string, any> | unknown = unknown>(\n\t\t\tthemes: Record<\n\t\t\t\tstring,\n\t\t\t\tboolean | ((options: SnapshotMeta<C> & M & GM) => Promise<boolean> | Promise<void> | boolean | void)\n\t\t\t>,\n\t\t): void\n\t}\n\tbeforeAll: {\n\t\tsetup(): Promise<void>\n\t}\n\tafterEach: {\n\t\tmatchImageSnapshot(): Promise<void>\n\t\tmatchPerTheme<C extends ComparisonMethod, M extends Record<string, any> | unknown = unknown>(\n\t\t\tthemes: Record<\n\t\t\t\tstring,\n\t\t\t\tboolean | ((options: SnapshotMeta<C> & M & GM) => Promise<boolean> | Promise<void> | boolean | void)\n\t\t\t>,\n\t\t): () => Promise<void>\n\t}\n}\n\nexport function createVis<GM extends Record<string, any> | unknown = unknown>(commands: SetupVisSuiteCommand) {\n\tconst matcher = autoSnapshotMatcher(commands, expect)\n\n\tconst vis: VisClientConfigurator<GM> = {\n\t\tsetup(options) {\n\t\t\tif (!options || options.auto === false) {\n\t\t\t\tbeforeAll(matcher.setup)\n\t\t\t} else {\n\t\t\t\tbeforeAll(async () => {\n\t\t\t\t\tawait matcher.setup()\n\t\t\t\t\tsetAutoSnapshotOptions(true)\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (typeof options?.auto === 'function') {\n\t\t\t\tafterEach(\n\t\t\t\t\tmatcher.createMatcher({\n\t\t\t\t\t\tauto: options.auto,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t} else if (typeof options?.auto === 'object') {\n\t\t\t\tafterEach(matcher.createMatcher(options.auto))\n\t\t\t} else {\n\t\t\t\tafterEach(matcher.createMatcher({ async auto() {} }))\n\t\t\t}\n\t\t},\n\t\tpresets: {\n\t\t\tenable() {\n\t\t\t\tbeforeAll(matcher.setup)\n\t\t\t\tafterEach(matcher.createMatcher({ async auto() {} }))\n\t\t\t},\n\t\t\tmanual() {\n\t\t\t\tbeforeAll(matcher.setup)\n\t\t\t},\n\t\t\tauto() {\n\t\t\t\tbeforeAll(async () => {\n\t\t\t\t\tawait matcher.setup()\n\t\t\t\t\tsetAutoSnapshotOptions(true)\n\t\t\t\t})\n\t\t\t\tafterEach(matcher.createMatcher({ async auto() {} }))\n\t\t\t},\n\t\t\ttheme(themes) {\n\t\t\t\tbeforeAll(async () => {\n\t\t\t\t\tawait matcher.setup()\n\t\t\t\t\tsetAutoSnapshotOptions(true)\n\t\t\t\t})\n\t\t\t\tafterEach(matcher.createMatcher(themes))\n\t\t\t},\n\t\t},\n\t\tbeforeAll: {\n\t\t\tasync setup() {\n\t\t\t\tawait matcher.setup()\n\t\t\t},\n\t\t},\n\t\tafterEach: {\n\t\t\tasync matchImageSnapshot() {\n\t\t\t\treturn matcher.createMatcher({ async auto() {} })()\n\t\t\t},\n\t\t\tmatchPerTheme(themes) {\n\t\t\t\treturn matcher.createMatcher(themes)\n\t\t\t},\n\t\t},\n\t}\n\treturn vis\n}\n","import { commands } from 'vitest/browser'\nimport { createVis } from './create_vis.ts'\n\n/**\n * Visual test configuration on the client side.\n */\nexport const vis = createVis(commands)\n"],"mappings":";;;;;;AAGA,MAAaA,QAAM;CAClB;CACA;CACA,gBAAgB;AACf,QAAI,iBAAiB;;CAEtB;;;;ACFD,SAAgBC,uBAKf,SACA,SACyB;CACzB,MAAM,OAAOC,MAAI,gBAAgB;AACjC,KAAI,CAAC,KACJ,OAAM,IAAI,MAAM,qDAAqD;AAGtE,KAAI,KAAK,WACR,OAAM,IAAI,MACT,uKAEA;AAGF,QAAO,yBAAyBA,MAAI,UAAU,SAAS,KAAK,EAAE,SAAS,QAAQ,CAAC,WAAW,QAAQ;;;;;ACvBpG,OAAO,OAAO,EAAE,8CAAsB,CAAC;;;;ACCvC,MAAa,MAAM;CAClB;CACA;CACA,gBAAgB;AACf,MAAI,iBAAiB;;CAEtB;;;;ACED,SAAgB,iBAAoC,SAA+C;CAClG,MAAM,OAAO,IAAI,gBAAgB;AACjC,KAAI,CAAC,KACJ,OAAM,IAAI,MAAM,iDAAiD;AAGlE,KAAI,KAAK,WACR,OAAM,IAAI,MACT,oKAEA;AAEF,QAAO,uBAAuB,IAAI,UAAU,SAAS,KAAK,EAAE,QAAQ;;;;;ACdrE,SAAgB,qBACf,SACC;CACD,MAAM,OAAO,IAAI,gBAAgB;AACjC,KAAI,CAAC,KACJ,OAAM,IAAI,MAAM,qDAAqD;AAGtE,KAAI,KAAK,WACR,OAAM,IAAI,MACT,uKAEA;AAGF,QAAO,6BAA6B,IAAI,UAAU,SAAS,KAAK,EAAE,QAAQ;;;;;ACrB3E,KAAK,OAAO;CAAE;CAAkB;CAAsB,CAAC;;;;ACsGvD,SAAgB,UAA8D,YAAgC;CAC7G,MAAM,UAAU,oBAAoBC,YAAU,OAAO;AA8DrD,QA5DuC;EACtC,MAAM,SAAS;AACd,OAAI,CAAC,WAAW,QAAQ,SAAS,MAChC,WAAU,QAAQ,MAAM;OAExB,WAAU,YAAY;AACrB,UAAM,QAAQ,OAAO;AACrB,2BAAuB,KAAK;KAC3B;AAGH,OAAI,OAAO,SAAS,SAAS,WAC5B,WACC,QAAQ,cAAc,EACrB,MAAM,QAAQ,MACd,CAAC,CACF;YACS,OAAO,SAAS,SAAS,SACnC,WAAU,QAAQ,cAAc,QAAQ,KAAK,CAAC;OAE9C,WAAU,QAAQ,cAAc,EAAE,MAAM,OAAO,IAAI,CAAC,CAAC;;EAGvD,SAAS;GACR,SAAS;AACR,cAAU,QAAQ,MAAM;AACxB,cAAU,QAAQ,cAAc,EAAE,MAAM,OAAO,IAAI,CAAC,CAAC;;GAEtD,SAAS;AACR,cAAU,QAAQ,MAAM;;GAEzB,OAAO;AACN,cAAU,YAAY;AACrB,WAAM,QAAQ,OAAO;AACrB,4BAAuB,KAAK;MAC3B;AACF,cAAU,QAAQ,cAAc,EAAE,MAAM,OAAO,IAAI,CAAC,CAAC;;GAEtD,MAAM,QAAQ;AACb,cAAU,YAAY;AACrB,WAAM,QAAQ,OAAO;AACrB,4BAAuB,KAAK;MAC3B;AACF,cAAU,QAAQ,cAAc,OAAO,CAAC;;GAEzC;EACD,WAAW,EACV,MAAM,QAAQ;AACb,SAAM,QAAQ,OAAO;KAEtB;EACD,WAAW;GACV,MAAM,qBAAqB;AAC1B,WAAO,QAAQ,cAAc,EAAE,MAAM,OAAO,IAAI,CAAC,EAAE;;GAEpD,cAAc,QAAQ;AACrB,WAAO,QAAQ,cAAc,OAAO;;GAErC;EACD;;;;;;;;ACnKF,MAAa,MAAM,UAAU,SAAS"}
|
package/dist/setup.d.mts
CHANGED
|
@@ -1,14 +1,10 @@
|
|
|
1
|
-
import { n as ComparisonMethod,
|
|
2
|
-
import "./
|
|
3
|
-
import "./types-
|
|
4
|
-
import
|
|
5
|
-
import "./
|
|
6
|
-
import "./augment-BJmy1S7i.mjs";
|
|
1
|
+
import { n as ComparisonMethod, p as SetupVisOptions, w as SnapshotMeta } from "./types-CEmjj-A9.mjs";
|
|
2
|
+
import "./types-DJYCbyT8.mjs";
|
|
3
|
+
import { s as SetupVisSuiteCommand } from "./commands.types-BVhcnnHw.mjs";
|
|
4
|
+
import "./to_match_image_snapshot.types--tTmHoRA.mjs";
|
|
5
|
+
import "./augment-C1tjdh5B.mjs";
|
|
7
6
|
|
|
8
|
-
//#region src/
|
|
9
|
-
type SetupVisOptions<GM extends Record<string, any> | unknown = unknown> = {
|
|
10
|
-
auto?: boolean | (<C extends ComparisonMethod, M extends Record<string, any> | unknown = unknown>(options: SnapshotMeta<C> & M & GM) => Promise<boolean> | Promise<void> | boolean | void) | Record<string, boolean | (<C extends ComparisonMethod, M extends Record<string, any> | unknown = unknown>(options: SnapshotMeta<C> & M & GM) => Promise<boolean> | Promise<void> | boolean | void)>;
|
|
11
|
-
};
|
|
7
|
+
//#region src/setup/create_vis.d.ts
|
|
12
8
|
/**
|
|
13
9
|
* Visual test configuration on the client side.
|
|
14
10
|
*/
|
|
@@ -100,11 +96,11 @@ type VisClientConfigurator<GM extends Record<string, any> | unknown = unknown> =
|
|
|
100
96
|
};
|
|
101
97
|
declare function createVis<GM extends Record<string, any> | unknown = unknown>(commands: SetupVisSuiteCommand): VisClientConfigurator<GM>;
|
|
102
98
|
//#endregion
|
|
103
|
-
//#region src/
|
|
99
|
+
//#region src/setup/vis.d.ts
|
|
104
100
|
/**
|
|
105
101
|
* Visual test configuration on the client side.
|
|
106
102
|
*/
|
|
107
103
|
declare const vis: VisClientConfigurator<unknown>;
|
|
108
104
|
//#endregion
|
|
109
|
-
export {
|
|
105
|
+
export { VisClientConfigurator, createVis, vis };
|
|
110
106
|
//# sourceMappingURL=setup.d.mts.map
|
package/dist/setup.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.mts","names":[],"sources":["../src/
|
|
1
|
+
{"version":3,"file":"setup.d.mts","names":[],"sources":["../src/setup/create_vis.ts","../src/setup/vis.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;KAUY,iCAAiC;EAAjC;;;;;;;;;;;;;;;;;;;;;;;;;;AAiGZ;;EAAwF,KAAA,CAAA,OAAA,CAAA,EApEvE,eAoEuE,CApEvD,EAoEuD,CAAA,CAAA,EAAA,IAAA;EAAoB;;;;;;ACrG5G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBDgFkB,4BAA4B,iDACnC,oCAEc,aAAa,KAAK,IAAI,OAAO,mBAAmB;;;aAK9D;;;0BAGa;4BACE,4BAA4B,iDAC3C,oCAEc,aAAa,KAAK,IAAI,OAAO,mBAAmB,yCAE9D;;;iBAIK,qBAAqB,mDAAmD,uBAAoB,sBAAA;;;;;;cCrG/F,KAAyB"}
|
package/dist/setup.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import "./asserts--HSSlgPD.mjs";
|
|
2
2
|
import "./constants-CTBaz8Ml.mjs";
|
|
3
|
-
import "./auto_snapshot_options-
|
|
3
|
+
import "./auto_snapshot_options-DUOTpF2N.mjs";
|
|
4
4
|
import "./base64-CHSENEAO.mjs";
|
|
5
|
-
import "./
|
|
6
|
-
import { n as createVis, t as vis } from "./setup-
|
|
5
|
+
import "./auto_snapshot_matcher-C0y6mAeS.mjs";
|
|
6
|
+
import { n as createVis, t as vis } from "./setup-DCytWz48.mjs";
|
|
7
7
|
|
|
8
8
|
export { createVis, vis };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { _ as ToMatchImageSnapshotOptions, n as ComparisonMethod } from "./types-CEmjj-A9.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/client/expect/to_match_image_snapshot.types.d.ts
|
|
4
4
|
interface ImageSnapshotMatcher {
|
|
@@ -6,4 +6,4 @@ interface ImageSnapshotMatcher {
|
|
|
6
6
|
}
|
|
7
7
|
//#endregion
|
|
8
8
|
export { ImageSnapshotMatcher as t };
|
|
9
|
-
//# sourceMappingURL=to_match_image_snapshot.types
|
|
9
|
+
//# sourceMappingURL=to_match_image_snapshot.types--tTmHoRA.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"to_match_image_snapshot.types
|
|
1
|
+
{"version":3,"file":"to_match_image_snapshot.types--tTmHoRA.d.mts","names":[],"sources":["../src/client/expect/to_match_image_snapshot.types.ts"],"sourcesContent":[],"mappings":";;;UAEiB,oBAAA;iCACe,4BAA4B,4BAA4B,iBAAiB;AADzG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trim_common_folder-DBThLerp.d.mts","names":[],"sources":["../src/shared/trim_common_folder.ts"],"sourcesContent":[],"mappings":";;AAIA;;;iBAAgB,gBAAA"}
|