vitest-plugin-vis 1.0.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/esm/client/ctx.d.ts +6 -0
- package/esm/client/ctx.d.ts.map +1 -0
- package/esm/client/ctx.js +7 -0
- package/esm/client/expect/expectation_result.d.ts +3 -0
- package/esm/client/expect/expectation_result.d.ts.map +1 -0
- package/esm/client/expect/expectation_result.js +5 -0
- package/esm/client/expect/extend.d.ts +8 -0
- package/esm/client/expect/extend.d.ts.map +1 -0
- package/esm/client/expect/extend.js +3 -0
- package/esm/client/expect/to_match_image_snapshot.d.ts +9 -0
- package/esm/client/expect/to_match_image_snapshot.d.ts.map +1 -0
- package/esm/client/expect/to_match_image_snapshot.js +32 -0
- package/esm/client/expect/to_match_image_snapshot.logic.d.ts +2 -0
- package/esm/client/expect/to_match_image_snapshot.logic.d.ts.map +1 -0
- package/esm/client/expect/to_match_image_snapshot.logic.js +11 -0
- package/esm/client/expect/to_match_image_snapshot.types.d.ts +7 -0
- package/esm/client/expect/to_match_image_snapshot.types.d.ts.map +1 -0
- package/esm/client/expect/to_match_image_snapshot.types.js +1 -0
- package/esm/client/page/extend.d.ts +6 -0
- package/esm/client/page/extend.d.ts.map +1 -0
- package/esm/client/page/extend.js +3 -0
- package/esm/client/page/has_image_snapshot.d.ts +10 -0
- package/esm/client/page/has_image_snapshot.d.ts.map +1 -0
- package/esm/client/page/has_image_snapshot.js +23 -0
- package/esm/client/selector.d.ts +9 -0
- package/esm/client/selector.d.ts.map +1 -0
- package/esm/client/selector.js +104 -0
- package/esm/client/should_take_snapshot.d.ts +10 -0
- package/esm/client/should_take_snapshot.d.ts.map +1 -0
- package/esm/client/should_take_snapshot.js +13 -0
- package/esm/client/snapshot_options.d.ts +34 -0
- package/esm/client/snapshot_options.d.ts.map +1 -0
- package/esm/client/snapshot_options.internal.d.ts +3 -0
- package/esm/client/snapshot_options.internal.d.ts.map +1 -0
- package/esm/client/snapshot_options.internal.js +20 -0
- package/esm/client/snapshot_options.js +16 -0
- package/esm/client/task_id.d.ts +7 -0
- package/esm/client/task_id.d.ts.map +1 -0
- package/esm/client/task_id.js +10 -0
- package/esm/client.d.ts +8 -0
- package/esm/client.d.ts.map +1 -0
- package/esm/client.js +5 -0
- package/esm/commands.d.ts +5 -0
- package/esm/commands.d.ts.map +1 -0
- package/esm/commands.js +4 -0
- package/esm/config/types.d.ts +35 -0
- package/esm/config/types.d.ts.map +1 -0
- package/esm/config/types.js +1 -0
- package/esm/config/vis.d.ts +25 -0
- package/esm/config/vis.d.ts.map +1 -0
- package/esm/config/vis.js +27 -0
- package/esm/config.d.ts +4 -0
- package/esm/config.d.ts.map +1 -0
- package/esm/config.js +2 -0
- package/esm/index.d.ts +2 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/index.js +2 -0
- package/esm/presets/auto.d.ts +2 -0
- package/esm/presets/auto.d.ts.map +1 -0
- package/esm/presets/auto.js +3 -0
- package/esm/presets/manual.d.ts +2 -0
- package/esm/presets/manual.d.ts.map +1 -0
- package/esm/presets/manual.js +3 -0
- package/esm/server/browser_provider/browser_api.d.ts +3 -0
- package/esm/server/browser_provider/browser_api.d.ts.map +1 -0
- package/esm/server/browser_provider/browser_api.js +11 -0
- package/esm/server/browser_provider/playwright.d.ts +4 -0
- package/esm/server/browser_provider/playwright.d.ts.map +1 -0
- package/esm/server/browser_provider/playwright.js +13 -0
- package/esm/server/browser_provider/types.d.ts +6 -0
- package/esm/server/browser_provider/types.d.ts.map +1 -0
- package/esm/server/browser_provider/types.js +1 -0
- package/esm/server/browser_provider/webdriverio.d.ts +4 -0
- package/esm/server/browser_provider/webdriverio.d.ts.map +1 -0
- package/esm/server/browser_provider/webdriverio.js +10 -0
- package/esm/server/commands/extend.d.ts +15 -0
- package/esm/server/commands/extend.d.ts.map +1 -0
- package/esm/server/commands/extend.js +10 -0
- package/esm/server/commands/has_image_snapshot.d.ts +6 -0
- package/esm/server/commands/has_image_snapshot.d.ts.map +1 -0
- package/esm/server/commands/has_image_snapshot.js +7 -0
- package/esm/server/commands/image_snapshot_next_index.d.ts +9 -0
- package/esm/server/commands/image_snapshot_next_index.d.ts.map +1 -0
- package/esm/server/commands/image_snapshot_next_index.js +7 -0
- package/esm/server/commands/is_ci.d.ts +2 -0
- package/esm/server/commands/is_ci.d.ts.map +1 -0
- package/esm/server/commands/is_ci.js +6 -0
- package/esm/server/commands/match_image_snapshot.d.ts +17 -0
- package/esm/server/commands/match_image_snapshot.d.ts.map +1 -0
- package/esm/server/commands/match_image_snapshot.js +88 -0
- package/esm/server/commands/setup_vis_suite.d.ts +13 -0
- package/esm/server/commands/setup_vis_suite.d.ts.map +1 -0
- package/esm/server/commands/setup_vis_suite.js +4 -0
- package/esm/server/compare_image.d.ts +8 -0
- package/esm/server/compare_image.d.ts.map +1 -0
- package/esm/server/compare_image.js +16 -0
- package/esm/server/file.d.ts +6 -0
- package/esm/server/file.d.ts.map +1 -0
- package/esm/server/file.js +14 -0
- package/esm/server/snapshot_path.d.ts +4 -0
- package/esm/server/snapshot_path.d.ts.map +1 -0
- package/esm/server/snapshot_path.js +9 -0
- package/esm/server/vis_context.ctx.d.ts +29 -0
- package/esm/server/vis_context.ctx.d.ts.map +1 -0
- package/esm/server/vis_context.ctx.js +11 -0
- package/esm/server/vis_context.d.ts +33 -0
- package/esm/server/vis_context.d.ts.map +1 -0
- package/esm/server/vis_context.js +2 -0
- package/esm/server/vis_context.logic.d.ts +63 -0
- package/esm/server/vis_context.logic.d.ts.map +1 -0
- package/esm/server/vis_context.logic.js +116 -0
- package/esm/server/vis_context.types.d.ts +20 -0
- package/esm/server/vis_context.types.d.ts.map +1 -0
- package/esm/server/vis_context.types.js +1 -0
- package/esm/setup/create_vis.d.ts +39 -0
- package/esm/setup/create_vis.d.ts.map +1 -0
- package/esm/setup/create_vis.js +96 -0
- package/esm/setup/vis.d.ts +18 -0
- package/esm/setup/vis.d.ts.map +1 -0
- package/esm/setup/vis.js +6 -0
- package/esm/setup.d.ts +5 -0
- package/esm/setup.d.ts.map +1 -0
- package/esm/setup.js +7 -0
- package/esm/shared/base64.d.ts +2 -0
- package/esm/shared/base64.d.ts.map +1 -0
- package/esm/shared/base64.js +3 -0
- package/esm/shared/constants.d.ts +5 -0
- package/esm/shared/constants.d.ts.map +1 -0
- package/esm/shared/constants.js +4 -0
- package/esm/shared/convert_threshold_unit.d.ts +6 -0
- package/esm/shared/convert_threshold_unit.d.ts.map +1 -0
- package/esm/shared/convert_threshold_unit.js +10 -0
- package/esm/shared/get_max_size.d.ts +11 -0
- package/esm/shared/get_max_size.d.ts.map +1 -0
- package/esm/shared/get_max_size.js +5 -0
- package/esm/shared/is_same_size.d.ts +8 -0
- package/esm/shared/is_same_size.d.ts.map +1 -0
- package/esm/shared/is_same_size.js +3 -0
- package/esm/shared/trim_common_folder.d.ts +6 -0
- package/esm/shared/trim_common_folder.d.ts.map +1 -0
- package/esm/shared/trim_common_folder.js +10 -0
- package/esm/shared/types.d.ts +37 -0
- package/esm/shared/types.d.ts.map +1 -0
- package/esm/shared/types.js +1 -0
- package/esm/testing/constants.d.ts +9 -0
- package/esm/testing/constants.d.ts.map +1 -0
- package/esm/testing/constants.js +1933 -0
- package/esm/testing.d.ts +2 -0
- package/esm/testing.d.ts.map +1 -0
- package/esm/testing.js +1 -0
- package/package.json +115 -0
- package/readme.md +264 -0
- package/src/client/ctx.ts +8 -0
- package/src/client/expect/expectation_result.ts +7 -0
- package/src/client/expect/extend.ts +12 -0
- package/src/client/expect/to_match_image_snapshot.logic.ts +11 -0
- package/src/client/expect/to_match_image_snapshot.ts +43 -0
- package/src/client/expect/to_match_image_snapshot.types.ts +14 -0
- package/src/client/page/extend.ts +8 -0
- package/src/client/page/has_image_snapshot.ts +33 -0
- package/src/client/selector.ts +118 -0
- package/src/client/should_take_snapshot.ts +15 -0
- package/src/client/snapshot_options.internal.ts +22 -0
- package/src/client/snapshot_options.ts +53 -0
- package/src/client/task_id.ts +16 -0
- package/src/client.ts +7 -0
- package/src/commands.ts +4 -0
- package/src/config/readme.md +4 -0
- package/src/config/types.ts +35 -0
- package/src/config/vis.ts +30 -0
- package/src/config.ts +3 -0
- package/src/index.ts +2 -0
- package/src/presets/auto.ts +4 -0
- package/src/presets/manual.ts +4 -0
- package/src/server/browser_provider/browser_api.ts +13 -0
- package/src/server/browser_provider/playwright.ts +16 -0
- package/src/server/browser_provider/types.ts +11 -0
- package/src/server/browser_provider/webdriverio.ts +13 -0
- package/src/server/commands/extend.ts +19 -0
- package/src/server/commands/has_image_snapshot.ts +18 -0
- package/src/server/commands/image_snapshot_next_index.ts +17 -0
- package/src/server/commands/is_ci.ts +7 -0
- package/src/server/commands/match_image_snapshot.ts +139 -0
- package/src/server/commands/setup_vis_suite.ts +17 -0
- package/src/server/compare_image.ts +34 -0
- package/src/server/file.ts +15 -0
- package/src/server/readme.md +5 -0
- package/src/server/snapshot_path.ts +12 -0
- package/src/server/vis_context.ctx.ts +12 -0
- package/src/server/vis_context.logic.ts +141 -0
- package/src/server/vis_context.ts +3 -0
- package/src/server/vis_context.types.ts +25 -0
- package/src/setup/create_vis.ts +98 -0
- package/src/setup/vis.ts +7 -0
- package/src/setup.ts +9 -0
- package/src/shared/base64.ts +3 -0
- package/src/shared/constants.ts +4 -0
- package/src/shared/convert_threshold_unit.ts +13 -0
- package/src/shared/get_max_size.ts +5 -0
- package/src/shared/is_same_size.ts +3 -0
- package/src/shared/trim_common_folder.ts +10 -0
- package/src/shared/types.ts +39 -0
- package/src/testing/constants.ts +1936 -0
- package/src/testing.ts +1 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { join, relative } from 'pathe';
|
|
2
|
+
import { DIFF_DIR, RESULT_DIR } from "../shared/constants.js";
|
|
3
|
+
import { file } from "./file.js";
|
|
4
|
+
import { getSnapshotSubpath, resolveSnapshotRootDir } from "./snapshot_path.js";
|
|
5
|
+
import { ctx } from "./vis_context.ctx.js";
|
|
6
|
+
export function createVisContext() {
|
|
7
|
+
let visOptions = {};
|
|
8
|
+
let state;
|
|
9
|
+
let globalStateReady;
|
|
10
|
+
const context = {
|
|
11
|
+
setOptions(options = {}) {
|
|
12
|
+
visOptions = options;
|
|
13
|
+
},
|
|
14
|
+
__test__getOptions() {
|
|
15
|
+
return visOptions;
|
|
16
|
+
},
|
|
17
|
+
__test__reset() {
|
|
18
|
+
visOptions = undefined;
|
|
19
|
+
},
|
|
20
|
+
__test__getState() {
|
|
21
|
+
return state;
|
|
22
|
+
},
|
|
23
|
+
/**
|
|
24
|
+
* Setup suite is called on each test file's beforeAll hook.
|
|
25
|
+
* Test files include vitest test files and storybook story files.
|
|
26
|
+
* It needs to make sure there is no race condition between the test files.
|
|
27
|
+
*/
|
|
28
|
+
async setupSuite(context) {
|
|
29
|
+
if (!globalStateReady) {
|
|
30
|
+
globalStateReady = setupState(context, visOptions);
|
|
31
|
+
state = await globalStateReady;
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
await globalStateReady;
|
|
35
|
+
}
|
|
36
|
+
const { suiteId, suite } = createSuite(state, context.testPath, visOptions);
|
|
37
|
+
state.suites[suiteId] = suite;
|
|
38
|
+
await Promise.allSettled([ctx.rimraf(suite.diffDir), ctx.rimraf(suite.resultDir)]);
|
|
39
|
+
},
|
|
40
|
+
getSnapshotInfo(testPath, name, options) {
|
|
41
|
+
const info = context.getSuiteInfo(testPath, name);
|
|
42
|
+
const snapshotFilename = context.getSnapshotFilename(info, options?.snapshotFileId);
|
|
43
|
+
const { baselineDir, resultDir, diffDir, task } = info;
|
|
44
|
+
task.count = task.count + 1;
|
|
45
|
+
const baselinePath = join(baselineDir, snapshotFilename);
|
|
46
|
+
const resultPath = join(resultDir, snapshotFilename);
|
|
47
|
+
const diffPath = join(diffDir, snapshotFilename);
|
|
48
|
+
return {
|
|
49
|
+
baselinePath,
|
|
50
|
+
resultPath,
|
|
51
|
+
diffPath,
|
|
52
|
+
};
|
|
53
|
+
},
|
|
54
|
+
getTaskCount(testPath, taskId) {
|
|
55
|
+
return context.getSuiteInfo(testPath, taskId).task.count;
|
|
56
|
+
},
|
|
57
|
+
hasImageSnapshot(testPath, taskId, snapshotFileId) {
|
|
58
|
+
const info = context.getSuiteInfo(testPath, taskId);
|
|
59
|
+
return file.existFile(join(info.baselineDir, context.getSnapshotFilename(info, snapshotFileId)));
|
|
60
|
+
},
|
|
61
|
+
getSnapshotFilename(info, snapshotFileId) {
|
|
62
|
+
if (snapshotFileId)
|
|
63
|
+
return `${snapshotFileId}.png`;
|
|
64
|
+
const customizeSnapshotId = visOptions.customizeSnapshotId ?? ((id, index) => `${id}-${index}`);
|
|
65
|
+
return `${customizeSnapshotId(info.taskId, info.task.count)}.png`;
|
|
66
|
+
},
|
|
67
|
+
getSuiteInfo(testPath, taskId) {
|
|
68
|
+
const suiteId = getSuiteId(state, testPath, visOptions);
|
|
69
|
+
const suite = state.suites[suiteId];
|
|
70
|
+
const task = (suite.tasks[taskId] = suite.tasks[taskId] ?? { count: 1 });
|
|
71
|
+
return {
|
|
72
|
+
suiteId,
|
|
73
|
+
taskId,
|
|
74
|
+
baselineDir: suite.baselineDir,
|
|
75
|
+
resultDir: suite.resultDir,
|
|
76
|
+
diffDir: suite.diffDir,
|
|
77
|
+
task,
|
|
78
|
+
};
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
return context;
|
|
82
|
+
}
|
|
83
|
+
async function setupState(suite, visOptions) {
|
|
84
|
+
const snapshotRootDir = resolveSnapshotRootDir(visOptions);
|
|
85
|
+
const projectPath = suite.project.config.root;
|
|
86
|
+
const platform = ctx.getSnapshotPlatform();
|
|
87
|
+
const state = {
|
|
88
|
+
projectPath,
|
|
89
|
+
platform,
|
|
90
|
+
testTimeout: suite.project.config.testTimeout,
|
|
91
|
+
hookTimeout: suite.project.config.hookTimeout,
|
|
92
|
+
snapshotRootDir,
|
|
93
|
+
snapshotBaselineDir: join(snapshotRootDir, platform),
|
|
94
|
+
snapshotResultDir: join(snapshotRootDir, RESULT_DIR),
|
|
95
|
+
snapshotDiffDir: join(snapshotRootDir, DIFF_DIR),
|
|
96
|
+
snapshotRootPath: join(projectPath, snapshotRootDir),
|
|
97
|
+
suites: {},
|
|
98
|
+
};
|
|
99
|
+
await Promise.allSettled([ctx.rimraf(join(state.snapshotDiffDir)), ctx.rimraf(join(state.snapshotResultDir))]);
|
|
100
|
+
return state;
|
|
101
|
+
}
|
|
102
|
+
export function getSuiteId(state, testPath, options) {
|
|
103
|
+
return getSnapshotSubpath(relative(state.projectPath, testPath), options);
|
|
104
|
+
}
|
|
105
|
+
export function createSuite(state, testPath, options) {
|
|
106
|
+
const suiteId = getSuiteId(state, testPath, options);
|
|
107
|
+
return {
|
|
108
|
+
suiteId,
|
|
109
|
+
suite: {
|
|
110
|
+
baselineDir: join(state.snapshotBaselineDir, suiteId),
|
|
111
|
+
resultDir: join(state.snapshotResultDir, suiteId),
|
|
112
|
+
diffDir: join(state.snapshotDiffDir, suiteId),
|
|
113
|
+
tasks: {},
|
|
114
|
+
},
|
|
115
|
+
};
|
|
116
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export type VisState = {
|
|
2
|
+
projectPath: string;
|
|
3
|
+
platform: string;
|
|
4
|
+
testTimeout: number;
|
|
5
|
+
hookTimeout: number;
|
|
6
|
+
snapshotRootDir: string;
|
|
7
|
+
snapshotBaselineDir: string;
|
|
8
|
+
snapshotResultDir: string;
|
|
9
|
+
snapshotDiffDir: string;
|
|
10
|
+
snapshotRootPath: string;
|
|
11
|
+
suites: Record<string, {
|
|
12
|
+
baselineDir: string;
|
|
13
|
+
resultDir: string;
|
|
14
|
+
diffDir: string;
|
|
15
|
+
tasks: Record<string, {
|
|
16
|
+
count: number;
|
|
17
|
+
}>;
|
|
18
|
+
}>;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=vis_context.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vis_context.types.d.ts","sourceRoot":"","sources":["../../src/server/vis_context.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,iBAAiB,EAAE,MAAM,CAAA;IACzB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;IACxB,MAAM,EAAE,MAAM,CACb,MAAM,EACN;QACC,WAAW,EAAE,MAAM,CAAA;QACnB,SAAS,EAAE,MAAM,CAAA;QACjB,OAAO,EAAE,MAAM,CAAA;QACf,KAAK,EAAE,MAAM,CACZ,MAAM,EACN;YACC,KAAK,EAAE,MAAM,CAAA;SACb,CACD,CAAA;KACD,CACD,CAAA;CACD,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { SetupVisSuiteCommand } from '../server/commands/setup_vis_suite.ts';
|
|
2
|
+
export declare function createVis(commands: SetupVisSuiteCommand): {
|
|
3
|
+
presets: {
|
|
4
|
+
/**
|
|
5
|
+
* Enable manual visual testing.
|
|
6
|
+
*/
|
|
7
|
+
manual(): void;
|
|
8
|
+
/**
|
|
9
|
+
* Enable automatic visual testing.
|
|
10
|
+
*
|
|
11
|
+
* This will take a snapshot after each test.
|
|
12
|
+
*/
|
|
13
|
+
auto(): void;
|
|
14
|
+
/**
|
|
15
|
+
* Enable automatic visual testing with multiple themes.
|
|
16
|
+
*
|
|
17
|
+
* This will take a snapshot after each test for each theme.
|
|
18
|
+
*
|
|
19
|
+
* @param themes A record of theme names and their setup functions.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* vis().presets.theme({
|
|
24
|
+
* light() { document.body.classList.add('light') },
|
|
25
|
+
* dark() { document.body.classList.add('dark') },
|
|
26
|
+
* })
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
theme(themes: Record<string, () => void | Promise<void>>): void;
|
|
30
|
+
};
|
|
31
|
+
beforeAll: {
|
|
32
|
+
setup(): Promise<void>;
|
|
33
|
+
};
|
|
34
|
+
afterEach: {
|
|
35
|
+
matchImageSnapshot(): Promise<void>;
|
|
36
|
+
matchPerTheme(themes: Record<string, () => Promise<void> | void>): () => Promise<void>;
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=create_vis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create_vis.d.ts","sourceRoot":"","sources":["../../src/setup/create_vis.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAEjF,wBAAgB,SAAS,CAAC,QAAQ,EAAE,oBAAoB;;QAMrD;;WAEG;;QAIH;;;;WAIG;;QAKH;;;;;;;;;;;;;;WAcG;sBACW,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;;;;;;;8BAgBlC,MAAM,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;;EAqClE"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import dedent from 'dedent';
|
|
2
|
+
import { afterEach, beforeAll, expect } from 'vitest';
|
|
3
|
+
import { toTaskId } from "../client.js";
|
|
4
|
+
import { ctx } from "../client/ctx.js";
|
|
5
|
+
import { shouldTakeSnapshot } from "../client/should_take_snapshot.js";
|
|
6
|
+
import { getAutoSnapshotOptions } from '../client/snapshot_options.internal.js';
|
|
7
|
+
export function createVis(commands) {
|
|
8
|
+
/**
|
|
9
|
+
* Visual test configuration on the client side.
|
|
10
|
+
*/
|
|
11
|
+
const vis = {
|
|
12
|
+
presets: {
|
|
13
|
+
/**
|
|
14
|
+
* Enable manual visual testing.
|
|
15
|
+
*/
|
|
16
|
+
manual() {
|
|
17
|
+
beforeAll(vis.beforeAll.setup);
|
|
18
|
+
},
|
|
19
|
+
/**
|
|
20
|
+
* Enable automatic visual testing.
|
|
21
|
+
*
|
|
22
|
+
* This will take a snapshot after each test.
|
|
23
|
+
*/
|
|
24
|
+
auto() {
|
|
25
|
+
beforeAll(vis.beforeAll.setup);
|
|
26
|
+
afterEach(vis.afterEach.matchImageSnapshot);
|
|
27
|
+
},
|
|
28
|
+
/**
|
|
29
|
+
* Enable automatic visual testing with multiple themes.
|
|
30
|
+
*
|
|
31
|
+
* This will take a snapshot after each test for each theme.
|
|
32
|
+
*
|
|
33
|
+
* @param themes A record of theme names and their setup functions.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```ts
|
|
37
|
+
* vis().presets.theme({
|
|
38
|
+
* light() { document.body.classList.add('light') },
|
|
39
|
+
* dark() { document.body.classList.add('dark') },
|
|
40
|
+
* })
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
theme(themes) {
|
|
44
|
+
beforeAll(vis.beforeAll.setup);
|
|
45
|
+
afterEach(vis.afterEach.matchPerTheme(themes));
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
beforeAll: {
|
|
49
|
+
async setup() {
|
|
50
|
+
await commands.setupVisSuite();
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
afterEach: {
|
|
54
|
+
async matchImageSnapshot() {
|
|
55
|
+
const meta = getAutoSnapshotOptions(ctx.getCurrentTest());
|
|
56
|
+
if (!shouldTakeSnapshot(meta))
|
|
57
|
+
return;
|
|
58
|
+
await expect(document.body).toMatchImageSnapshot(meta);
|
|
59
|
+
},
|
|
60
|
+
matchPerTheme(themes) {
|
|
61
|
+
return async function matchImageSnapshot() {
|
|
62
|
+
const test = ctx.getCurrentTest();
|
|
63
|
+
const meta = getAutoSnapshotOptions(test);
|
|
64
|
+
if (!shouldTakeSnapshot(meta))
|
|
65
|
+
return;
|
|
66
|
+
const errors = [];
|
|
67
|
+
for (const themeId in themes) {
|
|
68
|
+
try {
|
|
69
|
+
await themes[themeId]();
|
|
70
|
+
await expect(document.body).toMatchImageSnapshot({
|
|
71
|
+
...meta,
|
|
72
|
+
customizeSnapshotId: (id) => `${id}-${themeId}`,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
errors.push([themeId, error]);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if (errors.length > 0) {
|
|
80
|
+
if (errors.length === 1)
|
|
81
|
+
throw errors[0][1];
|
|
82
|
+
const taskId = toTaskId(test);
|
|
83
|
+
throw new AggregateError(errors, dedent `Snapshot \`${taskId}\` mismatched
|
|
84
|
+
|
|
85
|
+
${errors
|
|
86
|
+
.map(([themeId, error]) => {
|
|
87
|
+
return `Theme \`${themeId}\` failed: ${error.message}`;
|
|
88
|
+
})
|
|
89
|
+
.join('\n')}`);
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
return vis;
|
|
96
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visual test configuration on the client side.
|
|
3
|
+
*/
|
|
4
|
+
export declare const vis: {
|
|
5
|
+
presets: {
|
|
6
|
+
manual(): void;
|
|
7
|
+
auto(): void;
|
|
8
|
+
theme(themes: Record<string, () => void | Promise<void>>): void;
|
|
9
|
+
};
|
|
10
|
+
beforeAll: {
|
|
11
|
+
setup(): Promise<void>;
|
|
12
|
+
};
|
|
13
|
+
afterEach: {
|
|
14
|
+
matchImageSnapshot(): Promise<void>;
|
|
15
|
+
matchPerTheme(themes: Record<string, () => Promise<void> | void>): () => Promise<void>;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=vis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vis.d.ts","sourceRoot":"","sources":["../../src/setup/vis.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,eAAO,MAAM,GAAG;;;;;;;;;;;;;CAAsB,CAAA"}
|
package/esm/setup/vis.js
ADDED
package/esm/setup.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AACA,OAAO,2BAA2B,CAAA;AAClC,OAAO,yBAAyB,CAAA;AAEhC,cAAc,gBAAgB,CAAA;AAI9B,cAAc,uBAAuB,CAAA"}
|
package/esm/setup.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// `vitest-plugin-vis/setup` provides code needed in `vitest.setup.ts`.
|
|
2
|
+
import "./client/expect/extend.js";
|
|
3
|
+
import "./client/page/extend.js";
|
|
4
|
+
export * from "./setup/vis.js";
|
|
5
|
+
// This is exported for main/app boundary separation
|
|
6
|
+
// They can co-exist in the same export file thanks to ESM.
|
|
7
|
+
export * from "./setup/create_vis.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base64.d.ts","sourceRoot":"","sources":["../../src/shared/base64.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAE9D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/shared/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,QAAQ,CAAA;AACzB,eAAO,MAAM,iBAAiB,YAAY,CAAA;AAC1C,eAAO,MAAM,UAAU,gBAAgB,CAAA;AACvC,eAAO,MAAM,QAAQ,cAAc,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert_threshold_unit.d.ts","sourceRoot":"","sources":["../../src/shared/convert_threshold_unit.ts"],"names":[],"mappings":"AAAA,wBAAgB,oBAAoB,CACnC,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;IAAE,oBAAoB,EAAE,OAAO,GAAG,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EACrH,SAAS,EAAE,MAAM,GACf,MAAM,CASR"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export function convertThresholdUnit({ failureThresholdType, width, height }, pixelDiff) {
|
|
2
|
+
switch (failureThresholdType) {
|
|
3
|
+
case 'pixel':
|
|
4
|
+
return pixelDiff;
|
|
5
|
+
case 'percent':
|
|
6
|
+
return (pixelDiff / (width * height)) * 100;
|
|
7
|
+
default:
|
|
8
|
+
throw new Error(`Invalid failureThresholdType: ${failureThresholdType}`);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get_max_size.d.ts","sourceRoot":"","sources":["../../src/shared/get_max_size.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;;;EAI9G"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is_same_size.d.ts","sourceRoot":"","sources":["../../src/shared/is_same_size.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,WAE9G"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trim_common_folder.d.ts","sourceRoot":"","sources":["../../src/shared/trim_common_folder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,UAKjD"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trim off common folder such as `src` or `tests` from the test file path.
|
|
3
|
+
* This is used to generate the default snapshot sub-path.
|
|
4
|
+
*/
|
|
5
|
+
export function trimCommonFolder(suiteName) {
|
|
6
|
+
const suiteDir = suiteName.split('/', 1)[0];
|
|
7
|
+
if (['tests', 'test', 'src', 'source', 'js', 'ts', 'lib'].includes(suiteDir))
|
|
8
|
+
return suiteName.slice(suiteDir.length + 1);
|
|
9
|
+
return suiteName;
|
|
10
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { PixelmatchOptions } from 'pixelmatch';
|
|
2
|
+
export interface ImageSnapshotTimeoutOptions {
|
|
3
|
+
/**
|
|
4
|
+
* Timeout for taking the snapshot.
|
|
5
|
+
*
|
|
6
|
+
* Default: 5000 ms locally, 30000 ms on CI.
|
|
7
|
+
*/
|
|
8
|
+
timeout?: number | undefined;
|
|
9
|
+
}
|
|
10
|
+
export interface ImageSnapshotIdOptions {
|
|
11
|
+
/**
|
|
12
|
+
* Customize the snapshot id. This is used as the filename of the snapshot: `${snapshotId}.png`
|
|
13
|
+
*
|
|
14
|
+
* @param id The id of the snapshot.
|
|
15
|
+
* @param index The index of the snapshot.
|
|
16
|
+
*/
|
|
17
|
+
customizeSnapshotId?: (id: string, index: number) => string;
|
|
18
|
+
}
|
|
19
|
+
export interface ImageSnapshotCompareOptions {
|
|
20
|
+
/**
|
|
21
|
+
* Custom options passed to 'pixelmatch'
|
|
22
|
+
*/
|
|
23
|
+
diffOptions?: PixelmatchOptions | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* Failure threshold should measure in `pixel` or `percent`.
|
|
26
|
+
*
|
|
27
|
+
* Default is `pixel`.
|
|
28
|
+
*/
|
|
29
|
+
failureThresholdType?: 'pixel' | 'percent' | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Failure tolerance threshold.
|
|
32
|
+
*
|
|
33
|
+
* Default is `0`.
|
|
34
|
+
*/
|
|
35
|
+
failureThreshold?: number | undefined;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnD,MAAM,WAAW,2BAA2B;IAC3C;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACtC;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;CAC3D;AAED,MAAM,WAAW,2BAA2B;IAC3C;;OAEG;IACH,WAAW,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAA;IAC3C;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAAA;IACtD;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACrC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const UNI_PNG_BASE64 = "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";
|
|
2
|
+
export declare const UNI_PNG_URL = "data:image/png;base64,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";
|
|
3
|
+
export declare const UNI_IMAGE_DATA: {
|
|
4
|
+
width: number;
|
|
5
|
+
height: number;
|
|
6
|
+
colorSpace: PredefinedColorSpace;
|
|
7
|
+
data: Uint8ClampedArray<ArrayBuffer>;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/testing/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,qqGACwoG,CAAA;AAEnqG,eAAO,MAAM,WAAW,2rGAA4C,CAAA;AAEpE,eAAO,MAAM,cAAc;;;gBAGJ,oBAAoB;;CAu4D1C,CAAA"}
|