diff --git a/packages/vant/docs/site/use-translate.ts b/packages/vant/docs/site/use-translate.ts
index a70fc8a5d..164beef4f 100644
--- a/packages/vant/docs/site/use-translate.ts
+++ b/packages/vant/docs/site/use-translate.ts
@@ -1,3 +1,4 @@
+import { inBrowser } from '@vant/use';
import Locale from '../../src/locale';
import enUS from '../../src/locale/lang/en-US';
import { camelize, createTranslate } from '../../src/utils';
@@ -17,7 +18,7 @@ export function initDemoLocale() {
});
// switch lang after routing
- if (window.vueRouter) {
+ if (inBrowser && window.vueRouter) {
window.vueRouter.afterEach((to) => {
const { lang } = to.meta || {};
diff --git a/packages/vant/src/action-bar/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/action-bar/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..822361eaf
--- /dev/null
+++ b/packages/vant/src/action-bar/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,241 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/action-bar/test/demo-ssr.spec.ts b/packages/vant/src/action-bar/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/action-bar/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/action-sheet/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/action-sheet/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..88ad68959
--- /dev/null
+++ b/packages/vant/src/action-sheet/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,104 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+ Basic Usage
+
+
+
+
+
+
+
+
+
+ Show Cancel Button
+
+
+
+
+
+
+
+
+
+ Show Description
+
+
+
+
+
+
+
+
+
+
+
+
+ Option Status
+
+
+
+
+
+
+
+
+
+
+
+
+ Custom Panel
+
+
+
+
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/action-sheet/test/demo-ssr.spec.ts b/packages/vant/src/action-sheet/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/action-sheet/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/address-edit/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/address-edit/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..a870a50e3
--- /dev/null
+++ b/packages/vant/src/address-edit/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,160 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+`;
diff --git a/packages/vant/src/address-edit/test/demo-ssr.spec.ts b/packages/vant/src/address-edit/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/address-edit/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/address-list/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/address-list/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..6118f0d32
--- /dev/null
+++ b/packages/vant/src/address-list/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,140 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ John Snow 13000000000
+
+
+ Default
+
+
+
+ Somewhere
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Ned Stark 1310000000
+
+
+ Somewhere
+
+
+
+
+
+
+
+
+
+
+
+
+ The following address is out of range
+
+
+
+
+
+
+
+ Tywin 1320000000
+
+
+ Somewhere
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/address-list/test/demo-ssr.spec.ts b/packages/vant/src/address-list/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/address-list/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/area/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/area/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..e8d54cc3c
--- /dev/null
+++ b/packages/vant/src/area/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,555 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+
+
+ -
+
+ Beijing
+
+
+ -
+
+ Zhejiang
+
+
+ -
+
+ Hong Kong
+
+
+
+
+
+
+
+ -
+
+ Beijing City
+
+
+
+
+
+
+
+ -
+
+ Dongcheng
+
+
+ -
+
+ Xicheng
+
+
+ -
+
+ Chaoyang
+
+
+ -
+
+ Fengtai
+
+
+ -
+
+ Haidian
+
+
+ -
+
+ Fangshan
+
+
+ -
+
+ Tongzhou
+
+
+ -
+
+ Shunyi
+
+
+ -
+
+ Changping
+
+
+ -
+
+ Daxing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+ Beijing
+
+
+ -
+
+ Zhejiang
+
+
+ -
+
+ Hong Kong
+
+
+
+
+
+
+
+ -
+
+ Hangzhou
+
+
+ -
+
+ Ningbo
+
+
+ -
+
+ Wenzhou
+
+
+ -
+
+ Jiaxin
+
+
+ -
+
+ Lishui
+
+
+
+
+
+
+
+ -
+
+ Lucheng
+
+
+ -
+
+ Wencheng
+
+
+ -
+
+ Shuntai
+
+
+ -
+
+ Ruian
+
+
+ -
+
+ Yueqing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+ Beijing
+
+
+ -
+
+ Zhejiang
+
+
+ -
+
+ Hong Kong
+
+
+
+
+
+
+
+ -
+
+ Beijing City
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+ Choose
+
+
+ -
+
+ Beijing
+
+
+ -
+
+ Zhejiang
+
+
+ -
+
+ Hong Kong
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/area/test/demo-ssr.spec.ts b/packages/vant/src/area/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/area/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/back-top/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/back-top/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..2437006c8
--- /dev/null
+++ b/packages/vant/src/back-top/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,60 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/back-top/test/demo-ssr.spec.ts b/packages/vant/src/back-top/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/back-top/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/badge/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/badge/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..7dae5d581
--- /dev/null
+++ b/packages/vant/src/badge/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,206 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/badge/test/demo-ssr.spec.ts b/packages/vant/src/badge/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/badge/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/button/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/button/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..1b44259cb
--- /dev/null
+++ b/packages/vant/src/button/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,423 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/button/test/demo-ssr.spec.ts b/packages/vant/src/button/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/button/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/calendar/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/calendar/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..397d8ee6b
--- /dev/null
+++ b/packages/vant/src/calendar/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,349 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+ Select Single Date
+
+
+
+
+
+
+
+
+
+ Select Multiple Date
+
+
+
+
+
+
+
+
+
+ Select Date Range
+
+
+
+
+
+
+
+
+
+
+
+
+ Select Single Date
+
+
+
+
+
+
+
+
+
+ Select Date Range
+
+
+
+
+
+
+
+
+
+
+
+
+ Custom Color
+
+
+
+
+
+
+
+
+
+ Custom Date Range
+
+
+
+
+
+
+
+
+
+ Custom Confirm Text
+
+
+
+
+
+
+
+
+
+ Custom Day Text
+
+
+
+
+
+
+
+
+
+ Custom Position
+
+
+
+
+
+
+
+
+
+ Max Range
+
+
+
+
+
+
+
+
+
+ Custom First Day Of Week
+
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/calendar/test/demo-ssr.spec.ts b/packages/vant/src/calendar/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/calendar/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/card/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/card/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..25823dc37
--- /dev/null
+++ b/packages/vant/src/card/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,213 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+`;
diff --git a/packages/vant/src/card/test/demo-ssr.spec.ts b/packages/vant/src/card/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/card/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/cascader/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/cascader/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..2b224f4cf
--- /dev/null
+++ b/packages/vant/src/cascader/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,185 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/cascader/test/demo-ssr.spec.ts b/packages/vant/src/cascader/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/cascader/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/cell/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/cell/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..dbe1d51fa
--- /dev/null
+++ b/packages/vant/src/cell/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,353 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+ Cell title
+
+
+
+
+ Content
+
+
+
+
+
+
+ Cell title
+
+
+ Description
+
+
+
+
+ Content
+
+
+
+
+
+
+
+
+
+
+
+
+ Cell title
+
+
+
+
+ Content
+
+
+
+
+
+
+ Cell title
+
+
+ Description
+
+
+
+
+ Content
+
+
+
+
+
+
+
+
+
+
+ Cell title
+
+
+
+
+ Content
+
+
+
+
+
+
+ Cell title
+
+
+ Description
+
+
+
+
+ Content
+
+
+
+
+
+
+
+
+
+
+
+
+ Cell title
+
+
+
+
+ Content
+
+
+
+
+
+
+
+
+
+ Cell title
+
+
+
+
+
+
+
+
+
+ Cell title
+
+
+
+
+ Content
+
+
+
+
+
+
+
+
+
+ Cell title
+
+
+
+
+ Content
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vue Router
+
+
+
+
+
+
+
+
+
+
+
+ Group 1
+
+
+
+
+
+
+ Cell title
+
+
+
+
+ Content
+
+
+
+
+
+
+ Group 2
+
+
+
+
+
+
+ Cell title
+
+
+
+
+ Content
+
+
+
+
+
+
+
+
+
+
+
+ Cell title
+
+
+
+ Tag
+
+
+
+
+ Content
+
+
+
+
+
+
+
+
+
+
+
+
+ Cell title
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cell title
+
+
+ Description
+
+
+
+
+ Content
+
+
+
+
+`;
diff --git a/packages/vant/src/cell/test/demo-ssr.spec.ts b/packages/vant/src/cell/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/cell/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/checkbox/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/checkbox/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..8a10b302b
--- /dev/null
+++ b/packages/vant/src/checkbox/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,520 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+ Checkbox
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Checkbox
+
+
+
+
+
+
+
+
+
+
+
+ Checkbox
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Custom Shape
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Custom Color
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Custom Icon Size
+
+
+
+
+
+
+
+
+
+

+
+
+
+ Custom Icon
+
+
+
+
+
+
+
+
+
+ Left Label
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Checkbox
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Checkbox a
+
+
+
+
+
+
+
+
+
+
+
+ Checkbox b
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Checkbox a
+
+
+
+
+
+
+
+
+
+
+
+ Checkbox b
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Checkbox a
+
+
+
+
+
+
+
+
+
+
+
+ Checkbox b
+
+
+
+
+
+
+
+
+
+
+
+ Checkbox c
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Checkbox a
+
+
+
+
+
+
+
+
+
+
+
+ Checkbox b
+
+
+
+
+
+
+
+
+
+
+
+ Checkbox c
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Checkbox a
+
+
+
+
+
+
+
+
+ Checkbox b
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/checkbox/test/demo-ssr.spec.ts b/packages/vant/src/checkbox/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/checkbox/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/circle/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/circle/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..bc7c0e7c3
--- /dev/null
+++ b/packages/vant/src/circle/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,247 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+ Custom Width
+
+
+
+
+
+ Custom Color
+
+
+
+
+
+ Gradient
+
+
+
+
+
+ Counter Clockwise
+
+
+
+
+
+ Custom Size
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Right
+
+
+
+
+
+ Bottom
+
+
+
+`;
diff --git a/packages/vant/src/circle/test/demo-ssr.spec.ts b/packages/vant/src/circle/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/circle/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/col/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/col/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..7113101f7
--- /dev/null
+++ b/packages/vant/src/col/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,164 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+ span: 8
+
+
+
+ span: 8
+
+
+
+ span: 8
+
+
+
+
+
+
+ span: 4
+
+
+
+ offset: 4, span: 10
+
+
+
+
+
+
+ offset: 12, span: 12
+
+
+
+
+
+
+
+
+
+ span: 8
+
+
+
+ span: 8
+
+
+
+ span: 8
+
+
+
+
+
+
+
+
+
+ span: 6
+
+
+
+ span: 6
+
+
+
+ span: 6
+
+
+
+
+
+
+ span: 6
+
+
+
+ span: 6
+
+
+
+ span: 6
+
+
+
+
+
+
+ span: 6
+
+
+
+ span: 6
+
+
+
+ span: 6
+
+
+
+
+
+
+ span: 6
+
+
+
+ span: 6
+
+
+
+ span: 6
+
+
+
+`;
diff --git a/packages/vant/src/col/test/demo-ssr.spec.ts b/packages/vant/src/col/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/col/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/collapse/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/collapse/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..258a48fa8
--- /dev/null
+++ b/packages/vant/src/collapse/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,369 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+ Title1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Title2
+
+
+
+
+ Content
+
+
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/collapse/test/demo-ssr.spec.ts b/packages/vant/src/collapse/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/collapse/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/config-provider/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/config-provider/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..163bf5d11
--- /dev/null
+++ b/packages/vant/src/config-provider/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,343 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+ Please click the button in the upper right corner to switch between dark and light modes.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/config-provider/test/demo-ssr.spec.ts b/packages/vant/src/config-provider/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/config-provider/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/contact-card/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/contact-card/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..41903d1f5
--- /dev/null
+++ b/packages/vant/src/contact-card/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,79 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+`;
diff --git a/packages/vant/src/contact-card/test/demo-ssr.spec.ts b/packages/vant/src/contact-card/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/contact-card/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/contact-edit/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/contact-edit/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..d44a519b2
--- /dev/null
+++ b/packages/vant/src/contact-edit/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,101 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+`;
diff --git a/packages/vant/src/contact-edit/test/demo-ssr.spec.ts b/packages/vant/src/contact-edit/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/contact-edit/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/contact-list/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/contact-list/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..7d0ce222d
--- /dev/null
+++ b/packages/vant/src/contact-list/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,101 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+`;
diff --git a/packages/vant/src/contact-list/test/demo-ssr.spec.ts b/packages/vant/src/contact-list/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/contact-list/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/coupon-list/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/coupon-list/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..c2fc482ff
--- /dev/null
+++ b/packages/vant/src/coupon-list/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,30 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+ Coupon
+
+
+
+
+ You have 2 coupons
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/coupon-list/test/demo-ssr.spec.ts b/packages/vant/src/coupon-list/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/coupon-list/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/date-picker/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/date-picker/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..54fdf528f
--- /dev/null
+++ b/packages/vant/src/date-picker/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,1042 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+
+
+ -
+
+ 2020
+
+
+ -
+
+ 2021
+
+
+ -
+
+ 2022
+
+
+ -
+
+ 2023
+
+
+ -
+
+ 2024
+
+
+ -
+
+ 2025
+
+
+
+
+
+
+
+ -
+
+ 01
+
+
+ -
+
+ 02
+
+
+ -
+
+ 03
+
+
+ -
+
+ 04
+
+
+ -
+
+ 05
+
+
+ -
+
+ 06
+
+
+ -
+
+ 07
+
+
+ -
+
+ 08
+
+
+ -
+
+ 09
+
+
+ -
+
+ 10
+
+
+ -
+
+ 11
+
+
+ -
+
+ 12
+
+
+
+
+
+
+
+ -
+
+ 01
+
+
+ -
+
+ 02
+
+
+ -
+
+ 03
+
+
+ -
+
+ 04
+
+
+ -
+
+ 05
+
+
+ -
+
+ 06
+
+
+ -
+
+ 07
+
+
+ -
+
+ 08
+
+
+ -
+
+ 09
+
+
+ -
+
+ 10
+
+
+ -
+
+ 11
+
+
+ -
+
+ 12
+
+
+ -
+
+ 13
+
+
+ -
+
+ 14
+
+
+ -
+
+ 15
+
+
+ -
+
+ 16
+
+
+ -
+
+ 17
+
+
+ -
+
+ 18
+
+
+ -
+
+ 19
+
+
+ -
+
+ 20
+
+
+ -
+
+ 21
+
+
+ -
+
+ 22
+
+
+ -
+
+ 23
+
+
+ -
+
+ 24
+
+
+ -
+
+ 25
+
+
+ -
+
+ 26
+
+
+ -
+
+ 27
+
+
+ -
+
+ 28
+
+
+ -
+
+ 29
+
+
+ -
+
+ 30
+
+
+ -
+
+ 31
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+ 2020
+
+
+ -
+
+ 2021
+
+
+ -
+
+ 2022
+
+
+ -
+
+ 2023
+
+
+ -
+
+ 2024
+
+
+ -
+
+ 2025
+
+
+
+
+
+
+
+ -
+
+ 01
+
+
+ -
+
+ 02
+
+
+ -
+
+ 03
+
+
+ -
+
+ 04
+
+
+ -
+
+ 05
+
+
+ -
+
+ 06
+
+
+ -
+
+ 07
+
+
+ -
+
+ 08
+
+
+ -
+
+ 09
+
+
+ -
+
+ 10
+
+
+ -
+
+ 11
+
+
+ -
+
+ 12
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+ 2020 Year
+
+
+ -
+
+ 2021 Year
+
+
+ -
+
+ 2022 Year
+
+
+ -
+
+ 2023 Year
+
+
+ -
+
+ 2024 Year
+
+
+ -
+
+ 2025 Year
+
+
+
+
+
+
+
+ -
+
+ 01 Month
+
+
+ -
+
+ 02 Month
+
+
+ -
+
+ 03 Month
+
+
+ -
+
+ 04 Month
+
+
+ -
+
+ 05 Month
+
+
+ -
+
+ 06 Month
+
+
+ -
+
+ 07 Month
+
+
+ -
+
+ 08 Month
+
+
+ -
+
+ 09 Month
+
+
+ -
+
+ 10 Month
+
+
+ -
+
+ 11 Month
+
+
+ -
+
+ 12 Month
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+ 2020
+
+
+ -
+
+ 2021
+
+
+ -
+
+ 2022
+
+
+ -
+
+ 2023
+
+
+ -
+
+ 2024
+
+
+ -
+
+ 2025
+
+
+
+
+
+
+
+ -
+
+ 06
+
+
+ -
+
+ 12
+
+
+
+
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/date-picker/test/demo-ssr.spec.ts b/packages/vant/src/date-picker/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/date-picker/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/dialog/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/dialog/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..a71456e60
--- /dev/null
+++ b/packages/vant/src/dialog/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,174 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+ Alert without title
+
+
+
+
+
+
+
+
+
+ Confirm dialog
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Alert without title
+
+
+
+
+
+
+
+
+
+
+
+
+ Before Close
+
+
+
+
+
+
+
+
+
+
+
+
+ Use Dialog Component
+
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/dialog/test/demo-ssr.spec.ts b/packages/vant/src/dialog/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/dialog/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/divider/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/divider/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..26dc0216d
--- /dev/null
+++ b/packages/vant/src/divider/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,55 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+ Text
+
+
+
+ Text
+
+
+
+
+`;
diff --git a/packages/vant/src/divider/test/demo-ssr.spec.ts b/packages/vant/src/divider/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/divider/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/dropdown-menu/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/dropdown-menu/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..d346d7a3c
--- /dev/null
+++ b/packages/vant/src/dropdown-menu/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,110 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/dropdown-menu/test/demo-ssr.spec.ts b/packages/vant/src/dropdown-menu/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/dropdown-menu/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/empty/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/empty/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..566a31a8e
--- /dev/null
+++ b/packages/vant/src/empty/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,615 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+ Description
+
+
+
+
+
+
+
+
+
+
+
+ Description
+
+
+
+
+
+
+
+

+
+
+ Description
+
+
+
+
+
+
+
+
+
+
+ Description
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/empty/test/demo-ssr.spec.ts b/packages/vant/src/empty/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/empty/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/field/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/field/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..7054df793
--- /dev/null
+++ b/packages/vant/src/field/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,642 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Invalid phone
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+ /50
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/field/test/demo-ssr.spec.ts b/packages/vant/src/field/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/field/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/form/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/form/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..0a9f9fcac
--- /dev/null
+++ b/packages/vant/src/form/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,813 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/form/test/demo-ssr.spec.ts b/packages/vant/src/form/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/form/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/grid/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/grid/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..6e214688e
--- /dev/null
+++ b/packages/vant/src/grid/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,719 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vue Router
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 99+
+
+
+
+ Text
+
+
+
+
+
+`;
diff --git a/packages/vant/src/grid/test/demo-ssr.spec.ts b/packages/vant/src/grid/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/grid/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/icon/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/icon/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..533c51e54
--- /dev/null
+++ b/packages/vant/src/icon/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,61 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+`;
diff --git a/packages/vant/src/icon/test/demo-ssr.spec.ts b/packages/vant/src/icon/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/icon/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/image/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/image/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..c8552b6d5
--- /dev/null
+++ b/packages/vant/src/image/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,560 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+ contain
+
+
+
+
+
+

+
+
+
+
+
+
+
+ cover
+
+
+
+
+
+

+
+
+
+
+
+
+
+ fill
+
+
+
+
+
+

+
+
+
+
+
+
+
+ none
+
+
+
+
+
+

+
+
+
+
+
+
+
+ scale-down
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+ cover
+
+
+ left
+
+
+
+
+
+

+
+
+
+
+
+
+
+ cover
+
+
+ center
+
+
+
+
+
+

+
+
+
+
+
+
+
+ cover
+
+
+ right
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+ contain
+
+
+ top
+
+
+
+
+
+

+
+
+
+
+
+
+
+ contain
+
+
+ center
+
+
+
+
+
+

+
+
+
+
+
+
+
+ contain
+
+
+ bottom
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+ contain
+
+
+
+
+
+

+
+
+
+
+
+
+
+ cover
+
+
+
+
+
+

+
+
+
+
+
+
+
+ fill
+
+
+
+
+
+

+
+
+
+
+
+
+
+ none
+
+
+
+
+
+

+
+
+
+
+
+
+
+ scale-down
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Custom Tip
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+ Default Tip
+
+
+
+
+
+

+
+
+
+
+
+
+
+ Custom Tip
+
+
+
+
+`;
diff --git a/packages/vant/src/image/test/demo-ssr.spec.ts b/packages/vant/src/image/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/image/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/index-bar/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/index-bar/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..5020d73bf
--- /dev/null
+++ b/packages/vant/src/index-bar/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,36 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+`;
diff --git a/packages/vant/src/index-bar/test/demo-ssr.spec.ts b/packages/vant/src/index-bar/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/index-bar/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/list/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/list/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..3fec5c42c
--- /dev/null
+++ b/packages/vant/src/list/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,44 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+`;
diff --git a/packages/vant/src/list/test/demo-ssr.spec.ts b/packages/vant/src/list/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/list/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/loading/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/loading/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..7a3782503
--- /dev/null
+++ b/packages/vant/src/loading/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,306 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Loading...
+
+
+
+
+
+
+
+
+
+
+
+ Loading...
+
+
+
+
+
+
+
+
+
+
+
+ Loading...
+
+
+
+
+
+
+
+
+ Loading...
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Loading...
+
+
+
+`;
diff --git a/packages/vant/src/loading/test/demo-ssr.spec.ts b/packages/vant/src/loading/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/loading/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/nav-bar/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/nav-bar/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..9c8a764ac
--- /dev/null
+++ b/packages/vant/src/nav-bar/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,99 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+ Back
+
+
+
+ Title
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Back
+
+
+
+ Title
+
+
+
+ Button
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Back
+
+
+
+ Title
+
+
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/nav-bar/test/demo-ssr.spec.ts b/packages/vant/src/nav-bar/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/nav-bar/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/notice-bar/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/notice-bar/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..e4f519e0b
--- /dev/null
+++ b/packages/vant/src/notice-bar/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,185 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+
+ Technology is the common soul of the people who developed it.
+
+
+
+
+
+
+
+
+
+
+ Technology is the common soul of the people who developed it.
+
+
+
+
+
+
+
+
+
+ Technology is the common soul of the people who developed it.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Content 1
+
+
+
+ Content 2
+
+
+
+ Content 3
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/notice-bar/test/demo-ssr.spec.ts b/packages/vant/src/notice-bar/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/notice-bar/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/notify/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/notify/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..a8ad70388
--- /dev/null
+++ b/packages/vant/src/notify/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,171 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+ Basic Usage
+
+
+
+
+
+
+
+
+
+
+
+
+ Primary
+
+
+
+
+
+
+
+
+
+ Success
+
+
+
+
+
+
+
+
+
+
+ Warning
+
+
+
+
+
+
+
+
+
+
+
+
+ Custom Color
+
+
+
+
+
+
+
+
+
+ Custom Position
+
+
+
+
+
+
+
+
+
+ Custom Duration
+
+
+
+
+
+
+
+
+
+
+
+
+ Use Notify Component
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/notify/test/demo-ssr.spec.ts b/packages/vant/src/notify/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/notify/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/number-keyboard/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/number-keyboard/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..e021b3e81
--- /dev/null
+++ b/packages/vant/src/number-keyboard/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,869 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+ Show Default Keyboard
+
+
+
+
+
+
+
+
+
+ Show Keyboard With Sidebar
+
+
+
+
+
+
+
+
+
+ Show IdNumber Keyboard
+
+
+
+
+
+
+
+
+
+ Show Keyboard With Title
+
+
+
+
+
+
+
+
+
+ Show Keyboard With Multiple ExtraKey
+
+
+
+
+
+
+
+
+
+ Show Keyboard With Random Key Order
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/number-keyboard/test/demo-ssr.spec.ts b/packages/vant/src/number-keyboard/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/number-keyboard/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/overlay/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/overlay/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..1ead7e792
--- /dev/null
+++ b/packages/vant/src/overlay/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,31 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/overlay/test/demo-ssr.spec.ts b/packages/vant/src/overlay/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/overlay/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/pagination/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/pagination/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..7cc02e89b
--- /dev/null
+++ b/packages/vant/src/pagination/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,187 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/pagination/test/demo-ssr.spec.ts b/packages/vant/src/pagination/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/pagination/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/password-input/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/password-input/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..f102d3598
--- /dev/null
+++ b/packages/vant/src/password-input/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,328 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/password-input/test/demo-ssr.spec.ts b/packages/vant/src/password-input/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/password-input/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/picker-group/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/picker-group/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..5477e1318
--- /dev/null
+++ b/packages/vant/src/picker-group/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,5291 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+ 2020
+
+
+ -
+
+ 2021
+
+
+ -
+
+ 2022
+
+
+ -
+
+ 2023
+
+
+ -
+
+ 2024
+
+
+ -
+
+ 2025
+
+
+
+
+
+
+
+ -
+
+ 01
+
+
+ -
+
+ 02
+
+
+ -
+
+ 03
+
+
+ -
+
+ 04
+
+
+ -
+
+ 05
+
+
+ -
+
+ 06
+
+
+ -
+
+ 07
+
+
+ -
+
+ 08
+
+
+ -
+
+ 09
+
+
+ -
+
+ 10
+
+
+ -
+
+ 11
+
+
+ -
+
+ 12
+
+
+
+
+
+
+
+ -
+
+ 01
+
+
+ -
+
+ 02
+
+
+ -
+
+ 03
+
+
+ -
+
+ 04
+
+
+ -
+
+ 05
+
+
+ -
+
+ 06
+
+
+ -
+
+ 07
+
+
+ -
+
+ 08
+
+
+ -
+
+ 09
+
+
+ -
+
+ 10
+
+
+ -
+
+ 11
+
+
+ -
+
+ 12
+
+
+ -
+
+ 13
+
+
+ -
+
+ 14
+
+
+ -
+
+ 15
+
+
+ -
+
+ 16
+
+
+ -
+
+ 17
+
+
+ -
+
+ 18
+
+
+ -
+
+ 19
+
+
+ -
+
+ 20
+
+
+ -
+
+ 21
+
+
+ -
+
+ 22
+
+
+ -
+
+ 23
+
+
+ -
+
+ 24
+
+
+ -
+
+ 25
+
+
+ -
+
+ 26
+
+
+ -
+
+ 27
+
+
+ -
+
+ 28
+
+
+ -
+
+ 29
+
+
+ -
+
+ 30
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+ 00
+
+
+ -
+
+ 01
+
+
+ -
+
+ 02
+
+
+ -
+
+ 03
+
+
+ -
+
+ 04
+
+
+ -
+
+ 05
+
+
+ -
+
+ 06
+
+
+ -
+
+ 07
+
+
+ -
+
+ 08
+
+
+ -
+
+ 09
+
+
+ -
+
+ 10
+
+
+ -
+
+ 11
+
+
+ -
+
+ 12
+
+
+ -
+
+ 13
+
+
+ -
+
+ 14
+
+
+ -
+
+ 15
+
+
+ -
+
+ 16
+
+
+ -
+
+ 17
+
+
+ -
+
+ 18
+
+
+ -
+
+ 19
+
+
+ -
+
+ 20
+
+
+ -
+
+ 21
+
+
+ -
+
+ 22
+
+
+ -
+
+ 23
+
+
+
+
+
+
+
+ -
+
+ 00
+
+
+ -
+
+ 01
+
+
+ -
+
+ 02
+
+
+ -
+
+ 03
+
+
+ -
+
+ 04
+
+
+ -
+
+ 05
+
+
+ -
+
+ 06
+
+
+ -
+
+ 07
+
+
+ -
+
+ 08
+
+
+ -
+
+ 09
+
+
+ -
+
+ 10
+
+
+ -
+
+ 11
+
+
+ -
+
+ 12
+
+
+ -
+
+ 13
+
+
+ -
+
+ 14
+
+
+ -
+
+ 15
+
+
+ -
+
+ 16
+
+
+ -
+
+ 17
+
+
+ -
+
+ 18
+
+
+ -
+
+ 19
+
+
+ -
+
+ 20
+
+
+ -
+
+ 21
+
+
+ -
+
+ 22
+
+
+ -
+
+ 23
+
+
+ -
+
+ 24
+
+
+ -
+
+ 25
+
+
+ -
+
+ 26
+
+
+ -
+
+ 27
+
+
+ -
+
+ 28
+
+
+ -
+
+ 29
+
+
+ -
+
+ 30
+
+
+ -
+
+ 31
+
+
+ -
+
+ 32
+
+
+ -
+
+ 33
+
+
+ -
+
+ 34
+
+
+ -
+
+ 35
+
+
+ -
+
+ 36
+
+
+ -
+
+ 37
+
+
+ -
+
+ 38
+
+
+ -
+
+ 39
+
+
+ -
+
+ 40
+
+
+ -
+
+ 41
+
+
+ -
+
+ 42
+
+
+ -
+
+ 43
+
+
+ -
+
+ 44
+
+
+ -
+
+ 45
+
+
+ -
+
+ 46
+
+
+ -
+
+ 47
+
+
+ -
+
+ 48
+
+
+ -
+
+ 49
+
+
+ -
+
+ 50
+
+
+ -
+
+ 51
+
+
+ -
+
+ 52
+
+
+ -
+
+ 53
+
+
+ -
+
+ 54
+
+
+ -
+
+ 55
+
+
+ -
+
+ 56
+
+
+ -
+
+ 57
+
+
+ -
+
+ 58
+
+
+ -
+
+ 59
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+ 2020
+
+
+ -
+
+ 2021
+
+
+ -
+
+ 2022
+
+
+ -
+
+ 2023
+
+
+ -
+
+ 2024
+
+
+ -
+
+ 2025
+
+
+
+
+
+
+
+ -
+
+ 01
+
+
+ -
+
+ 02
+
+
+ -
+
+ 03
+
+
+ -
+
+ 04
+
+
+ -
+
+ 05
+
+
+ -
+
+ 06
+
+
+ -
+
+ 07
+
+
+ -
+
+ 08
+
+
+ -
+
+ 09
+
+
+ -
+
+ 10
+
+
+ -
+
+ 11
+
+
+ -
+
+ 12
+
+
+
+
+
+
+
+ -
+
+ 01
+
+
+ -
+
+ 02
+
+
+ -
+
+ 03
+
+
+ -
+
+ 04
+
+
+ -
+
+ 05
+
+
+ -
+
+ 06
+
+
+ -
+
+ 07
+
+
+ -
+
+ 08
+
+
+ -
+
+ 09
+
+
+ -
+
+ 10
+
+
+ -
+
+ 11
+
+
+ -
+
+ 12
+
+
+ -
+
+ 13
+
+
+ -
+
+ 14
+
+
+ -
+
+ 15
+
+
+ -
+
+ 16
+
+
+ -
+
+ 17
+
+
+ -
+
+ 18
+
+
+ -
+
+ 19
+
+
+ -
+
+ 20
+
+
+ -
+
+ 21
+
+
+ -
+
+ 22
+
+
+ -
+
+ 23
+
+
+ -
+
+ 24
+
+
+ -
+
+ 25
+
+
+ -
+
+ 26
+
+
+ -
+
+ 27
+
+
+ -
+
+ 28
+
+
+ -
+
+ 29
+
+
+ -
+
+ 30
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+ 00
+
+
+ -
+
+ 01
+
+
+ -
+
+ 02
+
+
+ -
+
+ 03
+
+
+ -
+
+ 04
+
+
+ -
+
+ 05
+
+
+ -
+
+ 06
+
+
+ -
+
+ 07
+
+
+ -
+
+ 08
+
+
+ -
+
+ 09
+
+
+ -
+
+ 10
+
+
+ -
+
+ 11
+
+
+ -
+
+ 12
+
+
+ -
+
+ 13
+
+
+ -
+
+ 14
+
+
+ -
+
+ 15
+
+
+ -
+
+ 16
+
+
+ -
+
+ 17
+
+
+ -
+
+ 18
+
+
+ -
+
+ 19
+
+
+ -
+
+ 20
+
+
+ -
+
+ 21
+
+
+ -
+
+ 22
+
+
+ -
+
+ 23
+
+
+
+
+
+
+
+ -
+
+ 00
+
+
+ -
+
+ 01
+
+
+ -
+
+ 02
+
+
+ -
+
+ 03
+
+
+ -
+
+ 04
+
+
+ -
+
+ 05
+
+
+ -
+
+ 06
+
+
+ -
+
+ 07
+
+
+ -
+
+ 08
+
+
+ -
+
+ 09
+
+
+ -
+
+ 10
+
+
+ -
+
+ 11
+
+
+ -
+
+ 12
+
+
+ -
+
+ 13
+
+
+ -
+
+ 14
+
+
+ -
+
+ 15
+
+
+ -
+
+ 16
+
+
+ -
+
+ 17
+
+
+ -
+
+ 18
+
+
+ -
+
+ 19
+
+
+ -
+
+ 20
+
+
+ -
+
+ 21
+
+
+ -
+
+ 22
+
+
+ -
+
+ 23
+
+
+ -
+
+ 24
+
+
+ -
+
+ 25
+
+
+ -
+
+ 26
+
+
+ -
+
+ 27
+
+
+ -
+
+ 28
+
+
+ -
+
+ 29
+
+
+ -
+
+ 30
+
+
+ -
+
+ 31
+
+
+ -
+
+ 32
+
+
+ -
+
+ 33
+
+
+ -
+
+ 34
+
+
+ -
+
+ 35
+
+
+ -
+
+ 36
+
+
+ -
+
+ 37
+
+
+ -
+
+ 38
+
+
+ -
+
+ 39
+
+
+ -
+
+ 40
+
+
+ -
+
+ 41
+
+
+ -
+
+ 42
+
+
+ -
+
+ 43
+
+
+ -
+
+ 44
+
+
+ -
+
+ 45
+
+
+ -
+
+ 46
+
+
+ -
+
+ 47
+
+
+ -
+
+ 48
+
+
+ -
+
+ 49
+
+
+ -
+
+ 50
+
+
+ -
+
+ 51
+
+
+ -
+
+ 52
+
+
+ -
+
+ 53
+
+
+ -
+
+ 54
+
+
+ -
+
+ 55
+
+
+ -
+
+ 56
+
+
+ -
+
+ 57
+
+
+ -
+
+ 58
+
+
+ -
+
+ 59
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+ 2020
+
+
+ -
+
+ 2021
+
+
+ -
+
+ 2022
+
+
+ -
+
+ 2023
+
+
+ -
+
+ 2024
+
+
+ -
+
+ 2025
+
+
+
+
+
+
+
+ -
+
+ 01
+
+
+ -
+
+ 02
+
+
+ -
+
+ 03
+
+
+ -
+
+ 04
+
+
+ -
+
+ 05
+
+
+ -
+
+ 06
+
+
+ -
+
+ 07
+
+
+ -
+
+ 08
+
+
+ -
+
+ 09
+
+
+ -
+
+ 10
+
+
+ -
+
+ 11
+
+
+ -
+
+ 12
+
+
+
+
+
+
+
+ -
+
+ 01
+
+
+ -
+
+ 02
+
+
+ -
+
+ 03
+
+
+ -
+
+ 04
+
+
+ -
+
+ 05
+
+
+ -
+
+ 06
+
+
+ -
+
+ 07
+
+
+ -
+
+ 08
+
+
+ -
+
+ 09
+
+
+ -
+
+ 10
+
+
+ -
+
+ 11
+
+
+ -
+
+ 12
+
+
+ -
+
+ 13
+
+
+ -
+
+ 14
+
+
+ -
+
+ 15
+
+
+ -
+
+ 16
+
+
+ -
+
+ 17
+
+
+ -
+
+ 18
+
+
+ -
+
+ 19
+
+
+ -
+
+ 20
+
+
+ -
+
+ 21
+
+
+ -
+
+ 22
+
+
+ -
+
+ 23
+
+
+ -
+
+ 24
+
+
+ -
+
+ 25
+
+
+ -
+
+ 26
+
+
+ -
+
+ 27
+
+
+ -
+
+ 28
+
+
+ -
+
+ 29
+
+
+ -
+
+ 30
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+ 2022
+
+
+ -
+
+ 2023
+
+
+ -
+
+ 2024
+
+
+ -
+
+ 2025
+
+
+
+
+
+
+
+ -
+
+ 01
+
+
+ -
+
+ 02
+
+
+ -
+
+ 03
+
+
+ -
+
+ 04
+
+
+ -
+
+ 05
+
+
+ -
+
+ 06
+
+
+ -
+
+ 07
+
+
+ -
+
+ 08
+
+
+ -
+
+ 09
+
+
+ -
+
+ 10
+
+
+ -
+
+ 11
+
+
+ -
+
+ 12
+
+
+
+
+
+
+
+ -
+
+ 01
+
+
+ -
+
+ 02
+
+
+ -
+
+ 03
+
+
+ -
+
+ 04
+
+
+ -
+
+ 05
+
+
+ -
+
+ 06
+
+
+ -
+
+ 07
+
+
+ -
+
+ 08
+
+
+ -
+
+ 09
+
+
+ -
+
+ 10
+
+
+ -
+
+ 11
+
+
+ -
+
+ 12
+
+
+ -
+
+ 13
+
+
+ -
+
+ 14
+
+
+ -
+
+ 15
+
+
+ -
+
+ 16
+
+
+ -
+
+ 17
+
+
+ -
+
+ 18
+
+
+ -
+
+ 19
+
+
+ -
+
+ 20
+
+
+ -
+
+ 21
+
+
+ -
+
+ 22
+
+
+ -
+
+ 23
+
+
+ -
+
+ 24
+
+
+ -
+
+ 25
+
+
+ -
+
+ 26
+
+
+ -
+
+ 27
+
+
+ -
+
+ 28
+
+
+ -
+
+ 29
+
+
+ -
+
+ 30
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+ 00
+
+
+ -
+
+ 01
+
+
+ -
+
+ 02
+
+
+ -
+
+ 03
+
+
+ -
+
+ 04
+
+
+ -
+
+ 05
+
+
+ -
+
+ 06
+
+
+ -
+
+ 07
+
+
+ -
+
+ 08
+
+
+ -
+
+ 09
+
+
+ -
+
+ 10
+
+
+ -
+
+ 11
+
+
+ -
+
+ 12
+
+
+ -
+
+ 13
+
+
+ -
+
+ 14
+
+
+ -
+
+ 15
+
+
+ -
+
+ 16
+
+
+ -
+
+ 17
+
+
+ -
+
+ 18
+
+
+ -
+
+ 19
+
+
+ -
+
+ 20
+
+
+ -
+
+ 21
+
+
+ -
+
+ 22
+
+
+ -
+
+ 23
+
+
+
+
+
+
+
+ -
+
+ 00
+
+
+ -
+
+ 01
+
+
+ -
+
+ 02
+
+
+ -
+
+ 03
+
+
+ -
+
+ 04
+
+
+ -
+
+ 05
+
+
+ -
+
+ 06
+
+
+ -
+
+ 07
+
+
+ -
+
+ 08
+
+
+ -
+
+ 09
+
+
+ -
+
+ 10
+
+
+ -
+
+ 11
+
+
+ -
+
+ 12
+
+
+ -
+
+ 13
+
+
+ -
+
+ 14
+
+
+ -
+
+ 15
+
+
+ -
+
+ 16
+
+
+ -
+
+ 17
+
+
+ -
+
+ 18
+
+
+ -
+
+ 19
+
+
+ -
+
+ 20
+
+
+ -
+
+ 21
+
+
+ -
+
+ 22
+
+
+ -
+
+ 23
+
+
+ -
+
+ 24
+
+
+ -
+
+ 25
+
+
+ -
+
+ 26
+
+
+ -
+
+ 27
+
+
+ -
+
+ 28
+
+
+ -
+
+ 29
+
+
+ -
+
+ 30
+
+
+ -
+
+ 31
+
+
+ -
+
+ 32
+
+
+ -
+
+ 33
+
+
+ -
+
+ 34
+
+
+ -
+
+ 35
+
+
+ -
+
+ 36
+
+
+ -
+
+ 37
+
+
+ -
+
+ 38
+
+
+ -
+
+ 39
+
+
+ -
+
+ 40
+
+
+ -
+
+ 41
+
+
+ -
+
+ 42
+
+
+ -
+
+ 43
+
+
+ -
+
+ 44
+
+
+ -
+
+ 45
+
+
+ -
+
+ 46
+
+
+ -
+
+ 47
+
+
+ -
+
+ 48
+
+
+ -
+
+ 49
+
+
+ -
+
+ 50
+
+
+ -
+
+ 51
+
+
+ -
+
+ 52
+
+
+ -
+
+ 53
+
+
+ -
+
+ 54
+
+
+ -
+
+ 55
+
+
+ -
+
+ 56
+
+
+ -
+
+ 57
+
+
+ -
+
+ 58
+
+
+ -
+
+ 59
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+ 00
+
+
+ -
+
+ 01
+
+
+ -
+
+ 02
+
+
+ -
+
+ 03
+
+
+ -
+
+ 04
+
+
+ -
+
+ 05
+
+
+ -
+
+ 06
+
+
+ -
+
+ 07
+
+
+ -
+
+ 08
+
+
+ -
+
+ 09
+
+
+ -
+
+ 10
+
+
+ -
+
+ 11
+
+
+ -
+
+ 12
+
+
+ -
+
+ 13
+
+
+ -
+
+ 14
+
+
+ -
+
+ 15
+
+
+ -
+
+ 16
+
+
+ -
+
+ 17
+
+
+ -
+
+ 18
+
+
+ -
+
+ 19
+
+
+ -
+
+ 20
+
+
+ -
+
+ 21
+
+
+ -
+
+ 22
+
+
+ -
+
+ 23
+
+
+
+
+
+
+
+ -
+
+ 00
+
+
+ -
+
+ 01
+
+
+ -
+
+ 02
+
+
+ -
+
+ 03
+
+
+ -
+
+ 04
+
+
+ -
+
+ 05
+
+
+ -
+
+ 06
+
+
+ -
+
+ 07
+
+
+ -
+
+ 08
+
+
+ -
+
+ 09
+
+
+ -
+
+ 10
+
+
+ -
+
+ 11
+
+
+ -
+
+ 12
+
+
+ -
+
+ 13
+
+
+ -
+
+ 14
+
+
+ -
+
+ 15
+
+
+ -
+
+ 16
+
+
+ -
+
+ 17
+
+
+ -
+
+ 18
+
+
+ -
+
+ 19
+
+
+ -
+
+ 20
+
+
+ -
+
+ 21
+
+
+ -
+
+ 22
+
+
+ -
+
+ 23
+
+
+ -
+
+ 24
+
+
+ -
+
+ 25
+
+
+ -
+
+ 26
+
+
+ -
+
+ 27
+
+
+ -
+
+ 28
+
+
+ -
+
+ 29
+
+
+ -
+
+ 30
+
+
+ -
+
+ 31
+
+
+ -
+
+ 32
+
+
+ -
+
+ 33
+
+
+ -
+
+ 34
+
+
+ -
+
+ 35
+
+
+ -
+
+ 36
+
+
+ -
+
+ 37
+
+
+ -
+
+ 38
+
+
+ -
+
+ 39
+
+
+ -
+
+ 40
+
+
+ -
+
+ 41
+
+
+ -
+
+ 42
+
+
+ -
+
+ 43
+
+
+ -
+
+ 44
+
+
+ -
+
+ 45
+
+
+ -
+
+ 46
+
+
+ -
+
+ 47
+
+
+ -
+
+ 48
+
+
+ -
+
+ 49
+
+
+ -
+
+ 50
+
+
+ -
+
+ 51
+
+
+ -
+
+ 52
+
+
+ -
+
+ 53
+
+
+ -
+
+ 54
+
+
+ -
+
+ 55
+
+
+ -
+
+ 56
+
+
+ -
+
+ 57
+
+
+ -
+
+ 58
+
+
+ -
+
+ 59
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/picker-group/test/demo-ssr.spec.ts b/packages/vant/src/picker-group/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/picker-group/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/picker/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/picker/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..77db66651
--- /dev/null
+++ b/packages/vant/src/picker/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,678 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+
+
+ -
+
+ Delaware
+
+
+ -
+
+ Florida
+
+
+ -
+
+ Wenzhou
+
+
+ -
+
+ Indiana
+
+
+ -
+
+ Maine
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+ Delaware
+
+
+ -
+
+ Florida
+
+
+ -
+
+ Wenzhou
+
+
+ -
+
+ Indiana
+
+
+ -
+
+ Maine
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+ Monday
+
+
+ -
+
+ Tuesday
+
+
+ -
+
+ Wednesday
+
+
+ -
+
+ Thursday
+
+
+ -
+
+ Friday
+
+
+
+
+
+
+
+ -
+
+ Morning
+
+
+ -
+
+ Afternoon
+
+
+ -
+
+ Evening
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+ Zhejiang
+
+
+ -
+
+ Fujian
+
+
+
+
+
+
+
+ -
+
+ Hangzhou
+
+
+ -
+
+ Wenzhou
+
+
+
+
+
+
+
+ -
+
+ Xihu
+
+
+ -
+
+ Yuhang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+ Delaware
+
+
+ -
+
+ Florida
+
+
+ -
+
+ Wenzhou
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+ Zhejiang
+
+
+ -
+
+ Fujian
+
+
+
+
+
+
+
+ -
+
+ Hangzhou
+
+
+ -
+
+ Wenzhou
+
+
+
+
+
+
+
+ -
+
+ Xihu
+
+
+ -
+
+ Yuhang
+
+
+
+
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/picker/test/demo-ssr.spec.ts b/packages/vant/src/picker/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/picker/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/popover/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/popover/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..aed3da5ea
--- /dev/null
+++ b/packages/vant/src/popover/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,143 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/popover/test/demo-ssr.spec.ts b/packages/vant/src/popover/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/popover/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/popup/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/popup/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..be04bd6b1
--- /dev/null
+++ b/packages/vant/src/popup/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,269 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+ Show Popup
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ From Top
+
+
+
+
+
+
+
+
+
+
+ From Bottom
+
+
+
+
+
+
+
+
+
+
+ From Left
+
+
+
+
+
+
+
+
+
+
+ From Right
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Close Icon
+
+
+
+
+
+
+
+
+
+ Custom Icon
+
+
+
+
+
+
+
+
+
+ Icon Position
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Round Corner (center)
+
+
+
+
+
+
+
+
+
+
+ Round Corner (bottom)
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Listen To Click Events
+
+
+
+
+
+
+
+
+
+
+ Listen To Display Events
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Get Container
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/popup/test/demo-ssr.spec.ts b/packages/vant/src/popup/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/popup/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/progress/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/progress/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..82a51b8fe
--- /dev/null
+++ b/packages/vant/src/progress/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,133 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+
+
+ Orange
+
+
+
+
+
+
+ Red
+
+
+
+
+
+
+ Purple
+
+
+
+
+
+
+
+
+
+ 50%
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/progress/test/demo-ssr.spec.ts b/packages/vant/src/progress/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/progress/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/pull-refresh/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/pull-refresh/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..3fec5c42c
--- /dev/null
+++ b/packages/vant/src/pull-refresh/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,44 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+`;
diff --git a/packages/vant/src/pull-refresh/test/demo-ssr.spec.ts b/packages/vant/src/pull-refresh/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/pull-refresh/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/radio/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/radio/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..9f2d7c9b9
--- /dev/null
+++ b/packages/vant/src/radio/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,498 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Radio 1
+
+
+
+
+
+
+
+
+
+
+
+ Radio 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Radio 1
+
+
+
+
+
+
+
+
+
+
+
+ Radio 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Radio 1
+
+
+
+
+
+
+
+
+
+
+
+ Radio 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Radio 1
+
+
+
+
+
+
+
+
+
+
+
+ Radio 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Radio 1
+
+
+
+
+
+
+
+
+
+
+
+ Radio 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Radio 1
+
+
+
+
+
+
+
+
+
+
+
+ Radio 2
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+ Radio 1
+
+
+
+
+
+
+

+
+
+
+ Radio 2
+
+
+
+
+
+
+
+
+
+
+
+
+ Radio 1
+
+
+
+
+
+
+
+
+
+
+
+ Radio 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Radio 1
+
+
+
+
+
+
+
+
+
+
+
+ Radio 2
+
+
+
+
+
+`;
diff --git a/packages/vant/src/radio/test/demo-ssr.spec.ts b/packages/vant/src/radio/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/radio/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/rate/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/rate/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..fac363ef9
--- /dev/null
+++ b/packages/vant/src/rate/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,752 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/rate/test/demo-ssr.spec.ts b/packages/vant/src/rate/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/rate/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/search/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/search/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..09cd540da
--- /dev/null
+++ b/packages/vant/src/search/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,202 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/search/test/demo-ssr.spec.ts b/packages/vant/src/search/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/search/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/share-sheet/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/share-sheet/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..eb3208e6c
--- /dev/null
+++ b/packages/vant/src/share-sheet/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,89 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+ Show ShareSheet
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Show ShareSheet
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Show ShareSheet
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Show ShareSheet
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/share-sheet/test/demo-ssr.spec.ts b/packages/vant/src/share-sheet/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/share-sheet/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/sidebar/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/sidebar/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..c6bf791e9
--- /dev/null
+++ b/packages/vant/src/sidebar/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,205 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+`;
diff --git a/packages/vant/src/sidebar/test/demo-ssr.spec.ts b/packages/vant/src/sidebar/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/sidebar/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/signature/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/signature/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..3ea059d50
--- /dev/null
+++ b/packages/vant/src/signature/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,110 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+`;
diff --git a/packages/vant/src/signature/test/demo-ssr.spec.ts b/packages/vant/src/signature/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/signature/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/skeleton/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/skeleton/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..7903f9806
--- /dev/null
+++ b/packages/vant/src/skeleton/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,132 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+`;
diff --git a/packages/vant/src/skeleton/test/demo-ssr.spec.ts b/packages/vant/src/skeleton/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/skeleton/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/slider/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/slider/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..c2100bb5a
--- /dev/null
+++ b/packages/vant/src/slider/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,248 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/slider/test/demo-ssr.spec.ts b/packages/vant/src/slider/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/slider/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/space/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/space/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..b1100c9b4
--- /dev/null
+++ b/packages/vant/src/space/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,465 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ start
+
+
+
+
+
+
+
+
+
+
+
+ center
+
+
+
+
+
+
+
+
+
+
+
+ end
+
+
+
+
+
+
+
+
+
+
+
+ baseline
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/space/test/demo-ssr.spec.ts b/packages/vant/src/space/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/space/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/stepper/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/stepper/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..a51e6fd22
--- /dev/null
+++ b/packages/vant/src/stepper/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,381 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+ Basic Usage
+
+
+
+
+
+
+
+
+
+
+
+ Disable Input
+
+
+
+
+
+
+
+ Decimal Length
+
+
+
+
+
+
+
+ Custom Size
+
+
+
+
+
+
+
+ Before Change
+
+
+
+
+
+
+
+ Round Theme
+
+
+
+
+
+`;
diff --git a/packages/vant/src/stepper/test/demo-ssr.spec.ts b/packages/vant/src/stepper/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/stepper/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/steps/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/steps/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..ad49baaeb
--- /dev/null
+++ b/packages/vant/src/steps/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,259 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+
+ Step1
+
+
+
+
+
+
+
+
+
+
+
+ Step2
+
+
+
+
+
+
+
+
+
+
+
+
+ Step3
+
+
+
+
+
+
+
+
+
+
+
+ Step4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Step1
+
+
+
+
+
+
+
+
+
+
+
+
+ Step2
+
+
+
+
+
+
+
+
+
+
+
+
+ Step3
+
+
+
+
+
+
+
+
+
+
+
+
+ Step4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 【City】Status1
+
+
+ 2016-07-12 12:40
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 【City】Status2
+
+
+ 2016-07-11 10:00
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 【City】Status3
+
+
+ 2016-07-10 09:30
+
+
+
+
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/steps/test/demo-ssr.spec.ts b/packages/vant/src/steps/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/steps/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/sticky/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/sticky/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..966503c9e
--- /dev/null
+++ b/packages/vant/src/sticky/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,93 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/sticky/test/demo-ssr.spec.ts b/packages/vant/src/sticky/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/sticky/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/submit-bar/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/submit-bar/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..9086197d8
--- /dev/null
+++ b/packages/vant/src/submit-bar/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,184 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+ Total:
+
+
+ ¥
+
+ 30
+
+ .50
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Some tips
+
+
+
+
+
+ Total:
+
+
+ ¥
+
+ 30
+
+ .50
+
+
+
+
+
+
+
+
+
+
+
+
+ Total:
+
+
+ ¥
+
+ 30
+
+ .50
+
+
+
+
+
+
+
+
+
+
+
+ Some tips,
+
+ Link
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Label
+
+
+
+
+ Total:
+
+
+ ¥
+
+ 30
+
+ .50
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/submit-bar/test/demo-ssr.spec.ts b/packages/vant/src/submit-bar/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/submit-bar/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/swipe-cell/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/swipe-cell/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..70ab799b9
--- /dev/null
+++ b/packages/vant/src/swipe-cell/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,188 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+
+
+ Cell
+
+
+
+
+ Content
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cell
+
+
+
+
+ Content
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/swipe-cell/test/demo-ssr.spec.ts b/packages/vant/src/swipe-cell/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/swipe-cell/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/swipe/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/swipe/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..ece284dd5
--- /dev/null
+++ b/packages/vant/src/swipe/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,208 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ 2
+
+
+
+ 3
+
+
+
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ 2
+
+
+
+ 3
+
+
+
+ 4
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ 2
+
+
+
+ 3
+
+
+
+ 4
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ 2
+
+
+
+ 3
+
+
+
+ 4
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ 2
+
+
+
+ 3
+
+
+
+ 4
+
+
+
+
+ NaN/0
+
+
+
+`;
diff --git a/packages/vant/src/swipe/test/demo-ssr.spec.ts b/packages/vant/src/swipe/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/swipe/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/switch/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/switch/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..7022bc63e
--- /dev/null
+++ b/packages/vant/src/switch/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,137 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/switch/test/demo-ssr.spec.ts b/packages/vant/src/switch/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/switch/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/tab/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/tab/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..f4d78423a
--- /dev/null
+++ b/packages/vant/src/tab/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,787 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ content of tab 1
+
+
+
+ content of tab 2
+
+
+
+ content of tab 3
+
+
+
+ content of tab 4
+
+
+
+ content of tab 5
+
+
+
+ content of tab 6
+
+
+
+ content of tab 7
+
+
+
+ content of tab 8
+
+
+
+
+
+`;
diff --git a/packages/vant/src/tab/test/demo-ssr.spec.ts b/packages/vant/src/tab/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/tab/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/tabbar/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/tabbar/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..0a9a2a8a9
--- /dev/null
+++ b/packages/vant/src/tabbar/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,513 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tab
+
+
+
+
+
+
+
+
+
+
+
+ Tab
+
+
+
+
+
+
+
+
+
+
+
+ Tab
+
+
+
+
+
+
+
+
+
+
+
+ Tab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tab
+
+
+
+
+
+
+
+
+
+
+
+ Tab
+
+
+
+
+
+
+
+
+
+
+
+ Tab
+
+
+
+
+
+
+
+
+
+
+
+ Tab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+ 3
+
+
+
+
+
+ Custom
+
+
+
+
+
+
+
+
+
+
+
+
+ Tab
+
+
+
+
+
+
+
+
+
+
+
+ Tab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tab
+
+
+
+
+
+
+
+
+
+
+
+ Tab
+
+
+
+
+
+
+
+
+
+
+
+ Tab
+
+
+
+
+
+
+
+
+
+
+
+ Tab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tab 1
+
+
+
+
+
+
+
+
+
+
+
+ Tab 2
+
+
+
+
+
+
+
+
+
+
+
+ Tab 3
+
+
+
+
+
+
+
+
+
+
+
+ Tab 4
+
+
+
+
+`;
diff --git a/packages/vant/src/tabbar/test/demo-ssr.spec.ts b/packages/vant/src/tabbar/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/tabbar/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/tag/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/tag/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..4d9ce11f6
--- /dev/null
+++ b/packages/vant/src/tag/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,274 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+ primary
+
+
+
+
+
+
+ Tag
+
+
+
+
+
+
+ success
+
+
+
+
+
+
+ Tag
+
+
+
+
+
+
+ danger
+
+
+
+
+
+
+ Tag
+
+
+
+
+
+
+ warning
+
+
+
+
+
+
+ Tag
+
+
+
+
+
+
+
+
+
+ Plain style
+
+
+
+
+
+
+ Tag
+
+
+
+
+
+
+ Round style
+
+
+
+
+
+
+ Tag
+
+
+
+
+
+
+ Mark style
+
+
+
+
+
+
+ Tag
+
+
+
+
+
+
+ Closeable
+
+
+
+
+
+
+ Tag
+
+
+
+
+
+
+
+
+
+
+
+
+ Small Size
+
+
+
+
+
+
+ Tag
+
+
+
+
+
+
+ Medium Size
+
+
+
+
+
+
+ Tag
+
+
+
+
+
+
+ Large Size
+
+
+
+
+
+
+ Tag
+
+
+
+
+
+
+
+
+
+ Background Color
+
+
+
+
+
+
+ Tag
+
+
+
+
+
+
+ Text Color
+
+
+
+
+
+
+ Tag
+
+
+
+
+
+
+ Plain Color
+
+
+
+
+
+
+ Tag
+
+
+
+
+`;
diff --git a/packages/vant/src/tag/test/demo-ssr.spec.ts b/packages/vant/src/tag/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/tag/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/text-ellipsis/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/text-ellipsis/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..4e866f5de
--- /dev/null
+++ b/packages/vant/src/text-ellipsis/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,20 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+`;
diff --git a/packages/vant/src/text-ellipsis/test/demo-ssr.spec.ts b/packages/vant/src/text-ellipsis/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/text-ellipsis/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/time-picker/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/time-picker/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..33f993fd9
--- /dev/null
+++ b/packages/vant/src/time-picker/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,3533 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+
+
+ -
+
+ 00
+
+
+ -
+
+ 01
+
+
+ -
+
+ 02
+
+
+ -
+
+ 03
+
+
+ -
+
+ 04
+
+
+ -
+
+ 05
+
+
+ -
+
+ 06
+
+
+ -
+
+ 07
+
+
+ -
+
+ 08
+
+
+ -
+
+ 09
+
+
+ -
+
+ 10
+
+
+ -
+
+ 11
+
+
+ -
+
+ 12
+
+
+ -
+
+ 13
+
+
+ -
+
+ 14
+
+
+ -
+
+ 15
+
+
+ -
+
+ 16
+
+
+ -
+
+ 17
+
+
+ -
+
+ 18
+
+
+ -
+
+ 19
+
+
+ -
+
+ 20
+
+
+ -
+
+ 21
+
+
+ -
+
+ 22
+
+
+ -
+
+ 23
+
+
+
+
+
+
+
+ -
+
+ 00
+
+
+ -
+
+ 01
+
+
+ -
+
+ 02
+
+
+ -
+
+ 03
+
+
+ -
+
+ 04
+
+
+ -
+
+ 05
+
+
+ -
+
+ 06
+
+
+ -
+
+ 07
+
+
+ -
+
+ 08
+
+
+ -
+
+ 09
+
+
+ -
+
+ 10
+
+
+ -
+
+ 11
+
+
+ -
+
+ 12
+
+
+ -
+
+ 13
+
+
+ -
+
+ 14
+
+
+ -
+
+ 15
+
+
+ -
+
+ 16
+
+
+ -
+
+ 17
+
+
+ -
+
+ 18
+
+
+ -
+
+ 19
+
+
+ -
+
+ 20
+
+
+ -
+
+ 21
+
+
+ -
+
+ 22
+
+
+ -
+
+ 23
+
+
+ -
+
+ 24
+
+
+ -
+
+ 25
+
+
+ -
+
+ 26
+
+
+ -
+
+ 27
+
+
+ -
+
+ 28
+
+
+ -
+
+ 29
+
+
+ -
+
+ 30
+
+
+ -
+
+ 31
+
+
+ -
+
+ 32
+
+
+ -
+
+ 33
+
+
+ -
+
+ 34
+
+
+ -
+
+ 35
+
+
+ -
+
+ 36
+
+
+ -
+
+ 37
+
+
+ -
+
+ 38
+
+
+ -
+
+ 39
+
+
+ -
+
+ 40
+
+
+ -
+
+ 41
+
+
+ -
+
+ 42
+
+
+ -
+
+ 43
+
+
+ -
+
+ 44
+
+
+ -
+
+ 45
+
+
+ -
+
+ 46
+
+
+ -
+
+ 47
+
+
+ -
+
+ 48
+
+
+ -
+
+ 49
+
+
+ -
+
+ 50
+
+
+ -
+
+ 51
+
+
+ -
+
+ 52
+
+
+ -
+
+ 53
+
+
+ -
+
+ 54
+
+
+ -
+
+ 55
+
+
+ -
+
+ 56
+
+
+ -
+
+ 57
+
+
+ -
+
+ 58
+
+
+ -
+
+ 59
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+ 00
+
+
+ -
+
+ 01
+
+
+ -
+
+ 02
+
+
+ -
+
+ 03
+
+
+ -
+
+ 04
+
+
+ -
+
+ 05
+
+
+ -
+
+ 06
+
+
+ -
+
+ 07
+
+
+ -
+
+ 08
+
+
+ -
+
+ 09
+
+
+ -
+
+ 10
+
+
+ -
+
+ 11
+
+
+ -
+
+ 12
+
+
+ -
+
+ 13
+
+
+ -
+
+ 14
+
+
+ -
+
+ 15
+
+
+ -
+
+ 16
+
+
+ -
+
+ 17
+
+
+ -
+
+ 18
+
+
+ -
+
+ 19
+
+
+ -
+
+ 20
+
+
+ -
+
+ 21
+
+
+ -
+
+ 22
+
+
+ -
+
+ 23
+
+
+
+
+
+
+
+ -
+
+ 00
+
+
+ -
+
+ 01
+
+
+ -
+
+ 02
+
+
+ -
+
+ 03
+
+
+ -
+
+ 04
+
+
+ -
+
+ 05
+
+
+ -
+
+ 06
+
+
+ -
+
+ 07
+
+
+ -
+
+ 08
+
+
+ -
+
+ 09
+
+
+ -
+
+ 10
+
+
+ -
+
+ 11
+
+
+ -
+
+ 12
+
+
+ -
+
+ 13
+
+
+ -
+
+ 14
+
+
+ -
+
+ 15
+
+
+ -
+
+ 16
+
+
+ -
+
+ 17
+
+
+ -
+
+ 18
+
+
+ -
+
+ 19
+
+
+ -
+
+ 20
+
+
+ -
+
+ 21
+
+
+ -
+
+ 22
+
+
+ -
+
+ 23
+
+
+ -
+
+ 24
+
+
+ -
+
+ 25
+
+
+ -
+
+ 26
+
+
+ -
+
+ 27
+
+
+ -
+
+ 28
+
+
+ -
+
+ 29
+
+
+ -
+
+ 30
+
+
+ -
+
+ 31
+
+
+ -
+
+ 32
+
+
+ -
+
+ 33
+
+
+ -
+
+ 34
+
+
+ -
+
+ 35
+
+
+ -
+
+ 36
+
+
+ -
+
+ 37
+
+
+ -
+
+ 38
+
+
+ -
+
+ 39
+
+
+ -
+
+ 40
+
+
+ -
+
+ 41
+
+
+ -
+
+ 42
+
+
+ -
+
+ 43
+
+
+ -
+
+ 44
+
+
+ -
+
+ 45
+
+
+ -
+
+ 46
+
+
+ -
+
+ 47
+
+
+ -
+
+ 48
+
+
+ -
+
+ 49
+
+
+ -
+
+ 50
+
+
+ -
+
+ 51
+
+
+ -
+
+ 52
+
+
+ -
+
+ 53
+
+
+ -
+
+ 54
+
+
+ -
+
+ 55
+
+
+ -
+
+ 56
+
+
+ -
+
+ 57
+
+
+ -
+
+ 58
+
+
+ -
+
+ 59
+
+
+
+
+
+
+
+ -
+
+ 00
+
+
+ -
+
+ 01
+
+
+ -
+
+ 02
+
+
+ -
+
+ 03
+
+
+ -
+
+ 04
+
+
+ -
+
+ 05
+
+
+ -
+
+ 06
+
+
+ -
+
+ 07
+
+
+ -
+
+ 08
+
+
+ -
+
+ 09
+
+
+ -
+
+ 10
+
+
+ -
+
+ 11
+
+
+ -
+
+ 12
+
+
+ -
+
+ 13
+
+
+ -
+
+ 14
+
+
+ -
+
+ 15
+
+
+ -
+
+ 16
+
+
+ -
+
+ 17
+
+
+ -
+
+ 18
+
+
+ -
+
+ 19
+
+
+ -
+
+ 20
+
+
+ -
+
+ 21
+
+
+ -
+
+ 22
+
+
+ -
+
+ 23
+
+
+ -
+
+ 24
+
+
+ -
+
+ 25
+
+
+ -
+
+ 26
+
+
+ -
+
+ 27
+
+
+ -
+
+ 28
+
+
+ -
+
+ 29
+
+
+ -
+
+ 30
+
+
+ -
+
+ 31
+
+
+ -
+
+ 32
+
+
+ -
+
+ 33
+
+
+ -
+
+ 34
+
+
+ -
+
+ 35
+
+
+ -
+
+ 36
+
+
+ -
+
+ 37
+
+
+ -
+
+ 38
+
+
+ -
+
+ 39
+
+
+ -
+
+ 40
+
+
+ -
+
+ 41
+
+
+ -
+
+ 42
+
+
+ -
+
+ 43
+
+
+ -
+
+ 44
+
+
+ -
+
+ 45
+
+
+ -
+
+ 46
+
+
+ -
+
+ 47
+
+
+ -
+
+ 48
+
+
+ -
+
+ 49
+
+
+ -
+
+ 50
+
+
+ -
+
+ 51
+
+
+ -
+
+ 52
+
+
+ -
+
+ 53
+
+
+ -
+
+ 54
+
+
+ -
+
+ 55
+
+
+ -
+
+ 56
+
+
+ -
+
+ 57
+
+
+ -
+
+ 58
+
+
+ -
+
+ 59
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+ 10
+
+
+ -
+
+ 11
+
+
+ -
+
+ 12
+
+
+ -
+
+ 13
+
+
+ -
+
+ 14
+
+
+ -
+
+ 15
+
+
+ -
+
+ 16
+
+
+ -
+
+ 17
+
+
+ -
+
+ 18
+
+
+ -
+
+ 19
+
+
+ -
+
+ 20
+
+
+
+
+
+
+
+ -
+
+ 30
+
+
+ -
+
+ 31
+
+
+ -
+
+ 32
+
+
+ -
+
+ 33
+
+
+ -
+
+ 34
+
+
+ -
+
+ 35
+
+
+ -
+
+ 36
+
+
+ -
+
+ 37
+
+
+ -
+
+ 38
+
+
+ -
+
+ 39
+
+
+ -
+
+ 40
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+ 00h
+
+
+ -
+
+ 01h
+
+
+ -
+
+ 02h
+
+
+ -
+
+ 03h
+
+
+ -
+
+ 04h
+
+
+ -
+
+ 05h
+
+
+ -
+
+ 06h
+
+
+ -
+
+ 07h
+
+
+ -
+
+ 08h
+
+
+ -
+
+ 09h
+
+
+ -
+
+ 10h
+
+
+ -
+
+ 11h
+
+
+ -
+
+ 12h
+
+
+ -
+
+ 13h
+
+
+ -
+
+ 14h
+
+
+ -
+
+ 15h
+
+
+ -
+
+ 16h
+
+
+ -
+
+ 17h
+
+
+ -
+
+ 18h
+
+
+ -
+
+ 19h
+
+
+ -
+
+ 20h
+
+
+ -
+
+ 21h
+
+
+ -
+
+ 22h
+
+
+ -
+
+ 23h
+
+
+
+
+
+
+
+ -
+
+ 00m
+
+
+ -
+
+ 01m
+
+
+ -
+
+ 02m
+
+
+ -
+
+ 03m
+
+
+ -
+
+ 04m
+
+
+ -
+
+ 05m
+
+
+ -
+
+ 06m
+
+
+ -
+
+ 07m
+
+
+ -
+
+ 08m
+
+
+ -
+
+ 09m
+
+
+ -
+
+ 10m
+
+
+ -
+
+ 11m
+
+
+ -
+
+ 12m
+
+
+ -
+
+ 13m
+
+
+ -
+
+ 14m
+
+
+ -
+
+ 15m
+
+
+ -
+
+ 16m
+
+
+ -
+
+ 17m
+
+
+ -
+
+ 18m
+
+
+ -
+
+ 19m
+
+
+ -
+
+ 20m
+
+
+ -
+
+ 21m
+
+
+ -
+
+ 22m
+
+
+ -
+
+ 23m
+
+
+ -
+
+ 24m
+
+
+ -
+
+ 25m
+
+
+ -
+
+ 26m
+
+
+ -
+
+ 27m
+
+
+ -
+
+ 28m
+
+
+ -
+
+ 29m
+
+
+ -
+
+ 30m
+
+
+ -
+
+ 31m
+
+
+ -
+
+ 32m
+
+
+ -
+
+ 33m
+
+
+ -
+
+ 34m
+
+
+ -
+
+ 35m
+
+
+ -
+
+ 36m
+
+
+ -
+
+ 37m
+
+
+ -
+
+ 38m
+
+
+ -
+
+ 39m
+
+
+ -
+
+ 40m
+
+
+ -
+
+ 41m
+
+
+ -
+
+ 42m
+
+
+ -
+
+ 43m
+
+
+ -
+
+ 44m
+
+
+ -
+
+ 45m
+
+
+ -
+
+ 46m
+
+
+ -
+
+ 47m
+
+
+ -
+
+ 48m
+
+
+ -
+
+ 49m
+
+
+ -
+
+ 50m
+
+
+ -
+
+ 51m
+
+
+ -
+
+ 52m
+
+
+ -
+
+ 53m
+
+
+ -
+
+ 54m
+
+
+ -
+
+ 55m
+
+
+ -
+
+ 56m
+
+
+ -
+
+ 57m
+
+
+ -
+
+ 58m
+
+
+ -
+
+ 59m
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+ 00
+
+
+ -
+
+ 01
+
+
+ -
+
+ 02
+
+
+ -
+
+ 03
+
+
+ -
+
+ 04
+
+
+ -
+
+ 05
+
+
+ -
+
+ 06
+
+
+ -
+
+ 07
+
+
+ -
+
+ 08
+
+
+ -
+
+ 09
+
+
+ -
+
+ 10
+
+
+ -
+
+ 11
+
+
+ -
+
+ 12
+
+
+ -
+
+ 13
+
+
+ -
+
+ 14
+
+
+ -
+
+ 15
+
+
+ -
+
+ 16
+
+
+ -
+
+ 17
+
+
+ -
+
+ 18
+
+
+ -
+
+ 19
+
+
+ -
+
+ 20
+
+
+ -
+
+ 21
+
+
+ -
+
+ 22
+
+
+ -
+
+ 23
+
+
+
+
+
+
+
+ -
+
+ 00
+
+
+ -
+
+ 10
+
+
+ -
+
+ 20
+
+
+ -
+
+ 30
+
+
+ -
+
+ 40
+
+
+ -
+
+ 50
+
+
+
+
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/time-picker/test/demo-ssr.spec.ts b/packages/vant/src/time-picker/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/time-picker/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/toast/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/toast/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..074cf1e03
--- /dev/null
+++ b/packages/vant/src/toast/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,245 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+ Loading
+
+
+
+
+
+
+
+
+
+ Success
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Custom Icon
+
+
+
+
+
+
+
+
+
+ Custom Image
+
+
+
+
+
+
+
+
+
+ Loading Type
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Break All
+
+
+
+
+
+
+
+
+
+ Break Word
+
+
+
+
+
+
+
+
+
+
+
+
+ Update Message
+
+
+
+
+
+
+
+
+
+
+
+
+ Use Toast Component
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/toast/test/demo-ssr.spec.ts b/packages/vant/src/toast/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/toast/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/tree-select/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/tree-select/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..cb1870b61
--- /dev/null
+++ b/packages/vant/src/tree-select/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,241 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+ Delaware
+
+
+
+
+
+ Florida
+
+
+ Georqia
+
+
+
+
+
+
+
+
+
+
+
+ Delaware
+
+
+
+
+
+ Florida
+
+
+
+
+
+ Georqia
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+ Delaware
+
+
+
+
+
+ Florida
+
+
+ Georqia
+
+
+
+
+`;
diff --git a/packages/vant/src/tree-select/test/demo-ssr.spec.ts b/packages/vant/src/tree-select/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/tree-select/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/src/uploader/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/uploader/test/__snapshots__/demo-ssr.spec.ts.snap
new file mode 100644
index 000000000..a2a6a30ae
--- /dev/null
+++ b/packages/vant/src/uploader/test/__snapshots__/demo-ssr.spec.ts.snap
@@ -0,0 +1,559 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render demo and match snapshot 1`] = `
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Uploading...
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vant/src/uploader/test/demo-ssr.spec.ts b/packages/vant/src/uploader/test/demo-ssr.spec.ts
new file mode 100644
index 000000000..8f1ec23a3
--- /dev/null
+++ b/packages/vant/src/uploader/test/demo-ssr.spec.ts
@@ -0,0 +1,7 @@
+/**
+ * @jest-environment node
+ */
+import Demo from '../demo/index.vue';
+import { snapshotDemo } from '../../../test/demo';
+
+snapshotDemo(Demo, { ssr: true });
diff --git a/packages/vant/test/demo.ts b/packages/vant/test/demo.ts
index b0722d1e5..d4680b88e 100644
--- a/packages/vant/test/demo.ts
+++ b/packages/vant/test/demo.ts
@@ -1,4 +1,5 @@
-import { h, defineComponent } from 'vue';
+import { h, defineComponent, createSSRApp } from 'vue';
+import { renderToString } from 'vue/server-renderer';
import Locale from '../src/locale';
import { mount, later } from '.';
import { initDemoLocale } from '../docs/site';
@@ -12,7 +13,13 @@ const EmptyComponent = defineComponent({
},
});
-export function snapshotDemo(Demo: any, option: any = {}) {
+type SnapshotDemoOptions = {
+ ssr?: boolean;
+ beforeTest?: () => void;
+ afterTest?: () => void;
+};
+
+export function snapshotDemo(Demo: any, option: SnapshotDemoOptions = {}) {
test('should render demo and match snapshot', async () => {
if (option.beforeTest) {
option.beforeTest();
@@ -22,18 +29,26 @@ export function snapshotDemo(Demo: any, option: any = {}) {
Locale.add(Demo.i18n);
}
- const wrapper = mount(Demo, {
- global: {
- components: {
- 'demo-block': EmptyComponent,
+ if (option.ssr) {
+ const app = createSSRApp(Demo);
+ app.component('DemoBlock', EmptyComponent);
+ const html = await renderToString(app);
+
+ expect(html).toMatchSnapshot();
+ } else {
+ const wrapper = mount(Demo, {
+ global: {
+ components: {
+ 'demo-block': EmptyComponent,
+ },
},
- },
- attachTo: document.body,
- });
+ attachTo: document.body,
+ });
- await later();
+ await later();
- expect(wrapper.html()).toMatchSnapshot();
+ expect(wrapper.html()).toMatchSnapshot();
+ }
if (option.afterTest) {
option.afterTest();