diff --git a/pages.json b/pages.json
index 28a69e80adfc523d8182eae61bce57d78901017f..8a650de7d38302f77ef16461878059aa1c511841 100644
--- a/pages.json
+++ b/pages.json
@@ -1508,6 +1508,14 @@
}
},
// #endif
+ // #ifdef APP-ANDROID || APP-IOS || WEB
+ {
+ "path": "pages/API/dialog-page/dialog-4",
+ "style": {
+ "navigationBarTitleText": "dialogPage4"
+ }
+ },
+ // #endif
// #ifdef APP-ANDROID || APP-IOS || MP-WEIXIN
{
"path": "pages/API/create-interstitial-ad/create-interstitial-ad",
@@ -3354,4 +3362,4 @@
]
}
]
-}
+}
diff --git a/pages/API/dialog-page/dialog-4.uvue b/pages/API/dialog-page/dialog-4.uvue
new file mode 100644
index 0000000000000000000000000000000000000000..f1f4292484a986b8853a699d14bda2e1ec2c10f6
--- /dev/null
+++ b/pages/API/dialog-page/dialog-4.uvue
@@ -0,0 +1,89 @@
+
+
+
+ title: {{ title }}
+
+
+
+
+
+
+
+
+
diff --git a/pages/API/dialog-page/dialog-page.test.js b/pages/API/dialog-page/dialog-page.test.js
index ccdb05a19abc51349d9891e60e23f85aac430ce1..c73baa4452226ddedd4361891fb520a821fe4ca3 100644
--- a/pages/API/dialog-page/dialog-page.test.js
+++ b/pages/API/dialog-page/dialog-page.test.js
@@ -1,4 +1,4 @@
-jest.setTimeout(20000)
+jest.setTimeout(50000)
const platformInfo = process.env.uniTestPlatformInfo.toLocaleLowerCase()
const isWeb = platformInfo.startsWith('web')
@@ -201,7 +201,8 @@ describe('dialog page', () => {
await page.callMethod('setLifeCycleNum', 0)
})
- it('openDialogPage to home page', async () => {
+ it('openDialogPage to home page', async () => {
+ // 本测试例中是在 FIRST_PAGE_PATH 中打开
await page.callMethod('openDialogPage1ToHomePage')
await page.waitFor(1000)
if (isWeb) {
@@ -215,7 +216,6 @@ describe('dialog page', () => {
it('dialog2 navigateBack', async () => {
await program.navigateBack()
page = await program.currentPage()
- // dialogPage onBackPress 返回 true, 应可以拦截 navigateBack
expect(page.path).toBe(FIRST_PAGE_PATH.substring(1))
const image = await program.screenshot({
deviceShot: true,
@@ -226,8 +226,8 @@ describe('dialog page', () => {
});
expect(image).toSaveImageSnapshot();
lifecycleNum = await page.callMethod('getLifeCycleNum')
- // onBackPress 生命周期应该被触发
- expect(lifecycleNum).toBe(2)
+ // dialogPage2 onBackPress +1 dialogPage1 show +1 dialogPage unload -5*2 firstPage show +10
+ expect(lifecycleNum).toBe(2)
await page.callMethod('setLifeCycleNum', 0)
})
@@ -298,10 +298,111 @@ describe('dialog page', () => {
});
expect(image5).toSaveImageSnapshot();
lifecycleNum = await page.callMethod('getLifeCycleNum')
- expect(lifecycleNum).toBe(2)
+ expect(lifecycleNum).toBe(2)
+ await page.callMethod('setLifeCycleNum', 0)
+ })
+
+ it('check triggerParentHide', async () => {
+ // no triggerParentHide should not trigger parent hide
+ await page.callMethod('openDialog4')
+ await page.waitFor(1000)
+ if (isWeb) {
+ await page.waitFor(2000)
+ }
+ // dialog4 show +1
+ expect(await page.callMethod('getLifeCycleNum')).toBe(1)
+ await page.callMethod('closeDialog')
+ await page.waitFor(200)
+ // dialog4 unload -5 closeDialog callback +2
+ expect(await page.callMethod('getLifeCycleNum')).toBe(-2)
+
+
+ // triggerParentHide should trigger parent hide
+ await page.callMethod('openDialogWithTriggerParentHide')
+ await page.waitFor(1000)
+ if (isWeb) {
+ await page.waitFor(2000)
+ }
+ // openDialog callback +2 dialog4 show +1 parent hide -10
+ expect(await page.callMethod('getLifeCycleNum')).toBe(-9)
+ await page.callMethod('closeDialog')
+ await page.waitFor(200)
+ // dialog4 unload -5 parent show +10 closeDialog callback +2
+ expect(await page.callMethod('getLifeCycleNum')).toBe(-2)
+
+
+ // triggerParentHide should trigger parent hide
+ await page.callMethod('openDialogWithTriggerParentHide')
+ await page.waitFor(1000)
+ if (isWeb) {
+ await page.waitFor(2000)
+ }
+ // openDialog callback +2 dialog4 show +1 parent hide -10
+ expect(await page.callMethod('getLifeCycleNum')).toBe(-9)
+
+ // second triggerParentHide should not trigger parent hide
+ await page.callMethod('openDialogWithTriggerParentHide')
+ await page.waitFor(1000)
+ if (isWeb) {
+ await page.waitFor(2000)
+ }
+ // openDialog callback +2 dialog4 show +1
+ expect(await page.callMethod('getLifeCycleNum')).toBe(-6)
+
+ await page.callMethod('closeSpecifiedDialog', 1)
+ await page.waitFor(200)
+ // close not last triggerParentHide should not trigger parent show
+ // close callback +2 dialog4 unload -5 dialog4 show +1
+ expect(await page.callMethod('getLifeCycleNum')).toBe(-8)
+
+ await page.callMethod('closeSpecifiedDialog', 0)
+ await page.waitFor(200)
+ // close last triggerParentHide should trigger parent show
+ // close callback +2 dialog4 unload -5 parent show +10
+ expect(await page.callMethod('getLifeCycleNum')).toBe(-1)
+
+
+ // no triggerParentHide should not trigger parent hide
+ await page.callMethod('openDialog4')
+ await page.waitFor(1000)
+ if (isWeb) {
+ await page.waitFor(2000)
+ }
+ // dialog4 show +1
+ expect(await page.callMethod('getLifeCycleNum')).toBe(0)
+ // triggerParentHide should trigger parent hide
+ await page.callMethod('openDialogWithTriggerParentHide')
+ await page.waitFor(1000)
+ if (isWeb) {
+ await page.waitFor(2000)
+ }
+ // openDialog callback +2 dialog4 show +1 parent hide -10
+ expect(await page.callMethod('getLifeCycleNum')).toBe(-7)
+
+ // second triggerParentHide should not trigger parent hide
+ await page.callMethod('openDialogWithTriggerParentHide')
+ await page.waitFor(1000)
+ if (isWeb) {
+ await page.waitFor(2000)
+ }
+ // openDialog callback +2 dialog4 show +1
+ expect(await page.callMethod('getLifeCycleNum')).toBe(-4)
+ // close middle triggerParentHide dialogPage
+ await page.callMethod('closeSpecifiedDialog', 1)
+ await page.waitFor(200)
+ // close callback +2 dialog4 unload -5
+ expect(await page.callMethod('getLifeCycleNum')).toBe(-7)
+ // close last triggerParentHide dialogPage shoud trigger parent show
+ await page.callMethod('closeSpecifiedDialog', 1)
+ await page.waitFor(200)
+ // close callback +2 dialog4 unload -5 dialog4 show +1 parent show +10
+ expect(await page.callMethod('getLifeCycleNum')).toBe(1)
+ await page.callMethod('closeDialog')
+ await page.waitFor(200)
+ // close callback +2 dialog4 unload -5
+ expect(await page.callMethod('getLifeCycleNum')).toBe(-2)
})
-
it('input-hold-keyboard in dialog', async () => {
await page.callMethod('jest_OpenDialog1')
await page.waitFor(2000);
diff --git a/pages/API/dialog-page/dialog-page.uvue b/pages/API/dialog-page/dialog-page.uvue
index 34b4a747d082d8831e96ae3e2b1762cc0040ab3c..e90a6de8f9212784ae29b78d7adc272b3888ee19 100644
--- a/pages/API/dialog-page/dialog-page.uvue
+++ b/pages/API/dialog-page/dialog-page.uvue
@@ -15,6 +15,9 @@
+
choose open dialogPage animationType
+style>