diff --git a/pages/composition-api/reactivity/watch-post-effect/watch-post-effect.test.js b/pages/composition-api/reactivity/watch-post-effect/watch-post-effect.test.js
new file mode 100644
index 0000000000000000000000000000000000000000..2f11dd49f6da9a57486bcc9dd632903ea485df85
--- /dev/null
+++ b/pages/composition-api/reactivity/watch-post-effect/watch-post-effect.test.js
@@ -0,0 +1,112 @@
+const PAGE_PATH = '/pages/composition-api/reactivity/watch-post-effect/watch-post-effect'
+
+describe('watchPostEffect', () => {
+ if (process.env.uniTestPlatformInfo.startsWith('android')) {
+ let page = null
+ beforeAll(async () => {
+ page = await program.reLaunch(PAGE_PATH)
+ await page.waitFor('view')
+ })
+ it('count', async () => {
+ const count = await page.$('#count')
+ expect(await count.text()).toBe('count: 0')
+
+ // watch
+ const watchCountRes = await page.$('#watch-count-res')
+ expect(await watchCountRes.text()).toBe(
+ 'watch count result: count: 0, count ref text: count: 0')
+
+ // track
+ const watchCountTrackNum = await page.$('#watch-count-track-num')
+ expect(await watchCountTrackNum.text()).toBe('watch count track number: 3')
+
+ // trigger
+ const watchCountTriggerNum = await page.$('#watch-count-trigger-num')
+ expect(await watchCountTriggerNum.text()).toBe('watch count trigger number: 0')
+ const watchCountCleanupRes = await page.$('#watch-count-cleanup-res')
+ expect(await watchCountCleanupRes.text()).toBe('watch count cleanup result: ')
+
+ // watch count and obj.num
+ const watchCountAndObjNumRes = await page.$('#watch-count-obj-num-res')
+ expect(await watchCountAndObjNumRes.text()).toBe('watch count and obj.num result: count: 0, obj.num: 0')
+
+ const incrementBtn = await page.$('#increment-btn')
+ await incrementBtn.tap()
+
+ expect(await count.text()).toBe('count: 1')
+ expect(await watchCountRes.text()).toBe(
+ 'watch count result: count: 1, count ref text: count: 1')
+ expect(await watchCountTrackNum.text()).toBe('watch count track number: 3')
+ expect(await watchCountTriggerNum.text()).toBe('watch count trigger number: 1')
+ expect(await watchCountCleanupRes.text()).toBe('watch count cleanup result: watch count cleanup: 1')
+
+ expect(await watchCountAndObjNumRes.text()).toBe('watch count and obj.num result: count: 1, obj.num: 0')
+
+ await incrementBtn.tap()
+
+ expect(await count.text()).toBe('count: 2')
+ expect(await watchCountRes.text()).toBe(
+ 'watch count result: count: 2, count ref text: count: 2')
+ expect(await watchCountTrackNum.text()).toBe('watch count track number: 3')
+ expect(await watchCountTriggerNum.text()).toBe('watch count trigger number: 2')
+ expect(await watchCountCleanupRes.text()).toBe('watch count cleanup result: watch count cleanup: 2')
+
+ expect(await watchCountAndObjNumRes.text()).toBe('watch count and obj.num result: count: 2, obj.num: 0')
+
+ // stop watch
+ const stopWatchCountBtn = await page.$('#stop-watch-count-btn')
+ await stopWatchCountBtn.tap()
+
+ await incrementBtn.tap()
+
+ expect(await count.text()).toBe('count: 3')
+ expect(await watchCountRes.text()).toBe(
+ 'watch count result: count: 2, count ref text: count: 2')
+ expect(await watchCountTrackNum.text()).toBe('watch count track number: 3')
+ expect(await watchCountTriggerNum.text()).toBe('watch count trigger number: 2')
+ expect(await watchCountCleanupRes.text()).toBe('watch count cleanup result: watch count cleanup: 2')
+
+ expect(await watchCountAndObjNumRes.text()).toBe('watch count and obj.num result: count: 3, obj.num: 0')
+ })
+ it('obj', async () => {
+ const objStr = await page.$('#obj-str')
+ expect(await objStr.text()).toBe('obj.str: num: 0')
+ const objNum = await page.$('#obj-num')
+ expect(await objNum.text()).toBe('obj.num: 0')
+ const objBool = await page.$('#obj-bool')
+ expect(await objBool.text()).toBe('obj.bool: false')
+ const objArr = await page.$('#obj-arr')
+ expect(await objArr.text()).toBe('obj.arr: [0]')
+
+ const watchObjRes = await page.$('#watch-obj-res')
+ expect(await watchObjRes.text()).toBe(
+ 'watch obj result: obj: {"arr":[0],"bool":false,"num":0,"str":"num: 0"}')
+ const watchObjStrRes = await page.$('#watch-obj-str-res')
+ expect(await watchObjStrRes.text()).toBe(
+ 'watch obj.str result: str: num: 0, obj.str ref text: obj.str: num: 0')
+ const watchObjArrRes = await page.$('#watch-obj-arr-res')
+ expect(await watchObjArrRes.text()).toBe('watch obj.arr result: arr: [0]')
+
+ const updateObjBtn = await page.$('#update-obj-btn')
+ await updateObjBtn.tap()
+
+ expect(await objStr.text()).toBe('obj.str: num: 1')
+ expect(await objNum.text()).toBe('obj.num: 1')
+ expect(await objBool.text()).toBe('obj.bool: true')
+ expect(await objArr.text()).toBe('obj.arr: [0,1]')
+
+ expect(await watchObjRes.text()).toBe(
+ 'watch obj result: obj: {"arr":[0],"bool":false,"num":0,"str":"num: 0"}')
+ expect(await watchObjStrRes.text()).toBe(
+ 'watch obj.str result: str: num: 1, obj.str ref text: obj.str: num: 1')
+ expect(await watchObjArrRes.text()).toBe('watch obj.arr result: arr: [0,1]')
+
+ const watchCountAndObjNumRes = await page.$('#watch-count-obj-num-res')
+ expect(await watchCountAndObjNumRes.text()).toBe('watch count and obj.num result: count: 3, obj.num: 1')
+ })
+ } else {
+ it('other platform', () => {
+ expect(1).toBe(1)
+ })
+ }
+})
\ No newline at end of file
diff --git a/pages/composition-api/reactivity/watch-post-effect/watch-post-effect.uvue b/pages/composition-api/reactivity/watch-post-effect/watch-post-effect.uvue
index 45db7feb081ebf1765dd900d8317b0e689b28f44..36189148d883d9434666b942a17bc23d07306a8f 100644
--- a/pages/composition-api/reactivity/watch-post-effect/watch-post-effect.uvue
+++ b/pages/composition-api/reactivity/watch-post-effect/watch-post-effect.uvue
@@ -1 +1,123 @@
- watchPostEffect
+
+
+
+
+
+ count: {{ count }}
+ watch count result: {{ watchCountRes }}
+ watch count track number: {{ watchCountTrackNum }}
+ watch count trigger number:
+ {{ watchCountTriggerNum }}
+ watch count cleanup result:
+ {{ watchCountCleanupRes }}
+
+
+ obj.str: {{ obj.str }}
+ obj.num: {{ obj.num }}
+ obj.bool: {{ obj.bool }}
+ obj.arr: {{ obj.arr }}
+ watch obj result: {{ watchObjRes }}
+ watch obj.str result: {{ watchObjStrRes }}
+ watch obj.arr result: {{ watchObjArrRes }}
+
+ watch count and obj.num result:
+ {{ watchCountAndObjNumRes }}
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/tab-bar/composition-api.uvue b/pages/tab-bar/composition-api.uvue
index 42421c6f158bb0fd2ef12c2170095efc8bd9bc6a..7ab563b4eafdd10f11fc976e700ef2426561946d 100644
--- a/pages/tab-bar/composition-api.uvue
+++ b/pages/tab-bar/composition-api.uvue
@@ -116,7 +116,7 @@
{
name: 'watchPostEffect',
url: 'watch-post-effect',
- enable: false,
+ enable: true,
},
{
name: 'watchSyncEffect',