Skip to content

Commit 7b0e1c5

Browse files
committed
test(overlays): improving overlay tests
1 parent 1b1988c commit 7b0e1c5

File tree

2 files changed

+91
-6
lines changed

2 files changed

+91
-6
lines changed

packages/vue/test/base/src/views/Overlays.vue

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,10 @@
6464
Modal onDidPresent: <div id="didPresent">{{ didPresent }}</div><br />
6565
Modal onWillDismiss: <div id="willDismiss">{{ willDismiss }}</div><br />
6666
Modal onDidDismiss: <div id="didDismiss">{{ didDismiss }}</div><br />
67+
Modal ionModalWillPresent: <div id="ionModalWillPresent">{{ ionModalWillPresent }}</div><br />
68+
Modal ionModalDidPresent: <div id="ionModalDidPresent">{{ ionModalDidPresent }}</div><br />
69+
Modal ionModalWillDismiss: <div id="ionModalWillDismiss">{{ ionModalWillDismiss }}</div><br />
70+
Modal ionModalDidDismiss: <div id="ionModalDidDismiss">{{ ionModalDidDismiss }}</div><br />
6771
</div>
6872

6973
<ion-action-sheet
@@ -98,6 +102,10 @@
98102
@didPresent="onModalDidPresent"
99103
@willDismiss="onModalWillDismiss"
100104
@didDismiss="onModalDidDismiss"
105+
@ionModalWillPresent="onModalIonWillPresent"
106+
@ionModalDidPresent="onModalIonDidPresent"
107+
@ionModalWillDismiss="onModalIonWillDismiss"
108+
@ionModalDidDismiss="onModalIonDidDismiss"
101109
>
102110
<ModalContent :title="overlayProps.title"></ModalContent>
103111
</ion-modal>
@@ -335,21 +343,37 @@ export default defineComponent({
335343
const didPresent = ref(0);
336344
const willDismiss = ref(0);
337345
const didDismiss = ref(0);
346+
const ionModalWillPresent = ref(0);
347+
const ionModalDidPresent = ref(0);
348+
const ionModalWillDismiss = ref(0);
349+
const ionModalDidDismiss = ref(0);
338350
339351
const onModalWillPresent = () => willPresent.value += 1;
340352
const onModalDidPresent = () => { didPresent.value += 1; setModalRef(true); }
341353
const onModalWillDismiss = () => willDismiss.value += 1;
342354
const onModalDidDismiss = () => { didDismiss.value += 1; setModalRef(false); }
355+
const onModalIonWillPresent = () => ionModalWillPresent.value += 1;
356+
const onModalIonDidPresent = () => ionModalDidPresent.value += 1;
357+
const onModalIonWillDismiss = () => ionModalWillDismiss.value += 1;
358+
const onModalIonDidDismiss = () => ionModalDidDismiss.value += 1;
343359
344360
return {
345361
onModalWillPresent,
346362
onModalDidPresent,
347363
onModalWillDismiss,
348364
onModalDidDismiss,
365+
onModalIonWillPresent,
366+
onModalIonDidPresent,
367+
onModalIonWillDismiss,
368+
onModalIonDidDismiss,
349369
willPresent,
350370
didPresent,
351371
willDismiss,
352372
didDismiss,
373+
ionModalWillPresent,
374+
ionModalDidPresent,
375+
ionModalWillDismiss,
376+
ionModalDidDismiss,
353377
changeLoadingProps,
354378
overlayProps,
355379
present,

packages/vue/test/base/tests/e2e/specs/overlays.cy.js

Lines changed: 67 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
const testController = (overlay, shadow = false) => {
22
const selector = `.${overlay}-controller`;
3-
cy.get(`ion-radio#${overlay}`).click();
4-
cy.get('ion-radio#controller').click();
3+
cy.get(`ion-radio#${overlay}`)
4+
.scrollIntoView({ offset: { top: -100, left: 0 } })
5+
.click({ force: true });
6+
cy.get('ion-radio#controller')
7+
.scrollIntoView({ offset: { top: -100, left: 0 } })
8+
.click({ force: true });
59

610
cy.get('ion-button#present-overlay').click();
711
cy.get(selector).should('exist').should('be.visible');
@@ -16,8 +20,12 @@ const testController = (overlay, shadow = false) => {
1620
}
1721

1822
const testComponent = (overlay, shadow = false) => {
19-
cy.get(`ion-radio#${overlay}`).click();
20-
cy.get('ion-radio#component').click();
23+
cy.get(`ion-radio#${overlay}`)
24+
.scrollIntoView({ offset: { top: -100, left: 0 } })
25+
.click({ force: true });
26+
cy.get('ion-radio#component')
27+
.scrollIntoView({ offset: { top: -100, left: 0 } })
28+
.click({ force: true });
2129

2230
cy.get('ion-button#present-overlay').click();
2331
cy.get(overlay).should('exist').should('be.visible');
@@ -40,8 +48,12 @@ const testComponent = (overlay, shadow = false) => {
4048
}
4149

4250
const testInlineOverlay = (overlay, shadow = false) => {
43-
cy.get(`ion-radio#${overlay}`).click();
44-
cy.get('ion-radio#component').click();
51+
cy.get(`ion-radio#${overlay}`)
52+
.scrollIntoView({ offset: { top: -100, left: 0 } })
53+
.click({ force: true });
54+
cy.get('ion-radio#component')
55+
.scrollIntoView({ offset: { top: -100, left: 0 } })
56+
.click({ force: true });
4557

4658
cy.get('ion-button#present-overlay').click();
4759
cy.get(overlay).should('exist').should('be.visible');
@@ -214,6 +226,49 @@ describe('Overlays', () => {
214226
});
215227
});
216228

229+
it('should fire long-form lifecycle events on overlays', () => {
230+
cy.get('ion-radio#ion-modal').click();
231+
cy.get('ion-radio#component').click();
232+
233+
cy.get('ion-button#present-overlay').click();
234+
cy.get('ion-modal').should('exist');
235+
236+
testLongLifecycle('overlays', {
237+
willPresent: 1,
238+
didPresent: 1,
239+
willDismiss: 0,
240+
didDismiss: 0
241+
});
242+
243+
cy.get('ion-modal #dismiss').click();
244+
245+
testLongLifecycle('overlays', {
246+
willPresent: 1,
247+
didPresent: 1,
248+
willDismiss: 1,
249+
didDismiss: 1
250+
});
251+
252+
cy.get('ion-button#present-overlay').click();
253+
cy.get('ion-modal').should('exist');
254+
255+
testLongLifecycle('overlays', {
256+
willPresent: 2,
257+
didPresent: 2,
258+
willDismiss: 1,
259+
didDismiss: 1
260+
});
261+
262+
cy.get('ion-modal #dismiss').click();
263+
264+
testLongLifecycle('overlays', {
265+
willPresent: 2,
266+
didPresent: 2,
267+
willDismiss: 2,
268+
didDismiss: 2
269+
});
270+
});
271+
217272
it('should unmount modal via component', () => {
218273
cy.get('ion-radio#ion-modal').click();
219274
cy.get('ion-radio#component').click();
@@ -260,3 +315,9 @@ const testLifecycle = (selector, expected = {}) => {
260315
cy.get(`[data-pageid=${selector}] #didDismiss`).should('have.text', expected.didDismiss);
261316
}
262317

318+
const testLongLifecycle = (selector, expected = {}) => {
319+
cy.get(`[data-pageid=${selector}] #ionModalWillPresent`).should('have.text', expected.willPresent);
320+
cy.get(`[data-pageid=${selector}] #ionModalDidPresent`).should('have.text', expected.didPresent);
321+
cy.get(`[data-pageid=${selector}] #ionModalWillDismiss`).should('have.text', expected.willDismiss);
322+
cy.get(`[data-pageid=${selector}] #ionModalDidDismiss`).should('have.text', expected.didDismiss);
323+
}

0 commit comments

Comments
 (0)