Skip to content

Commit 905e3df

Browse files
ADjenkovADjenkov
ADjenkov
authored and
ADjenkov
committed
chore(modal-navigation-ng): add modal view with frame navigation tests
1 parent 237c733 commit 905e3df

File tree

6 files changed

+469
-4
lines changed

6 files changed

+469
-4
lines changed

Diff for: e2e/modal-navigation-ng/e2e/modal-frame.e2e-spec.ts

+77
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
import { AppiumDriver, createDriver } from "nativescript-dev-appium";
2+
import { Screen } from "./screen"
3+
import {
4+
roots,
5+
modalFrameBackground,
6+
testSecondPageBackground,
7+
testSecondPageClose,
8+
testNestedModalFrameBackground,
9+
testNestedModalPageBackground,
10+
testDialogBackground
11+
} from "./shared.e2e-spec"
12+
13+
describe("modal-frame:", () => {
14+
15+
let driver: AppiumDriver;
16+
let screen: Screen;
17+
18+
before(async () => {
19+
driver = await createDriver();
20+
screen = new Screen(driver);
21+
});
22+
23+
roots.forEach(root => {
24+
describe(`${root} modal frame background scenarios:`, () => {
25+
26+
before(async () => {
27+
await screen[root]();
28+
});
29+
30+
beforeEach(async function () {
31+
await screen.loadModalFrame();
32+
});
33+
34+
afterEach(async function () {
35+
if (this.currentTest.state === "failed") {
36+
await driver.logPageSource(this.currentTest.title);
37+
await driver.logScreenshot(this.currentTest.title);
38+
await driver.resetApp();
39+
await screen[root]();
40+
}
41+
});
42+
43+
after(async () => {
44+
await screen.closeModal();
45+
await screen.loadedHome();
46+
});
47+
48+
it("should show dialog confirm, run in background", async () => {
49+
await testDialogBackground(driver, screen);
50+
});
51+
52+
it("should run modal page with frame in background", async () => {
53+
await modalFrameBackground(driver, screen);
54+
});
55+
56+
it("should navigate to second page, run in background, go back", async () => {
57+
await testSecondPageBackground(driver, screen);
58+
});
59+
60+
it("should show nested modal page with frame, run in background, close", async () => {
61+
await testNestedModalFrameBackground(driver, screen);
62+
});
63+
64+
it("should show nested modal page, run in background, close", async () => {
65+
await testNestedModalPageBackground(driver, screen);
66+
});
67+
68+
it("should navigate to second page, close", async () => {
69+
await testSecondPageClose(driver, screen);
70+
});
71+
72+
it("should navigate to second page, run in background, go back", async () => {
73+
await testSecondPageBackground(driver, screen);
74+
});
75+
});
76+
});
77+
});

Diff for: e2e/modal-navigation-ng/e2e/modal-layout.e2e-spec.ts

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import { AppiumDriver, createDriver } from "nativescript-dev-appium";
2+
import { Screen } from "./screen"
3+
import {
4+
roots,
5+
modalFrameBackground,
6+
testSecondPageBackground,
7+
testSecondPageClose,
8+
testNestedModalFrameBackground,
9+
testNestedModalPageBackground,
10+
testDialogBackground,
11+
} from "./shared.e2e-spec"
12+
13+
describe("modal-layout:", () => {
14+
15+
let driver: AppiumDriver;
16+
let screen: Screen;
17+
18+
before(async () => {
19+
driver = await createDriver();
20+
screen = new Screen(driver);
21+
});
22+
23+
roots.forEach(root => {
24+
describe(`${root} modal no frame background scenarios:`, () => {
25+
26+
before(async () => {
27+
await screen[root]();
28+
});
29+
30+
beforeEach(async function () {
31+
await screen.loadModalNoFrame();
32+
});
33+
34+
afterEach(async function () {
35+
if (this.currentTest.state === "failed") {
36+
await driver.logPageSource(this.currentTest.title);
37+
await driver.logScreenshot(this.currentTest.title);
38+
await driver.resetApp();
39+
await screen[root]();
40+
}
41+
});
42+
43+
after(async () => {
44+
await screen.closeModal();
45+
await screen.loadedHome();
46+
});
47+
48+
it("should show dialog confirm inside modal view with no frame, run in background", async () => {
49+
await testDialogBackground(driver, screen, false);
50+
});
51+
});
52+
});
53+
});

Diff for: e2e/modal-navigation-ng/e2e/screen.ts

+246
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,246 @@
1+
import { AppiumDriver } from "nativescript-dev-appium";
2+
import { assert } from "chai";
3+
4+
const home = "Home"
5+
const first = "First"
6+
const modal = "Modal";
7+
const modalFirst = "Modal First";
8+
const dialogConfirm = "Dialog";
9+
const modalSecond = "Modal Second";
10+
const modalNested = "Modal Nested";
11+
12+
const modalFrame = "Show Modal Page With Frame";
13+
const modalNoFrame = "Show Modal Without Frame";
14+
const modalLayout = "Show Modal Layout";
15+
const modalTabView = "Show Modal TabView";
16+
const navToSecondPage = "Navigate To Second Page";
17+
const showDialog = "Show Dialog";
18+
const resetFrameRootView = "Reset Frame Root View";
19+
const resetTabRootView = "Reset Tab Root View";
20+
const resetLayoutRootView = "Reset Layout Root View";
21+
22+
const showNestedModalFrame = "Show Nested Modal Page With Frame";
23+
const showNestedModalPage = "Show Nested Modal Page";
24+
25+
const confirmDialog = "Yes";
26+
const confirmDialogMessage = "Message";
27+
const closeModalNested = "Close Modal Nested";
28+
const closeModal = "Close Modal";
29+
const goBack = "Go Back";
30+
31+
export class Screen {
32+
33+
private _driver: AppiumDriver
34+
35+
constructor(driver: AppiumDriver) {
36+
this._driver = driver;
37+
}
38+
39+
loadedHome = async () => {
40+
const lblHome = await this._driver.findElementByText(home);
41+
assert.isTrue(await lblHome.isDisplayed());
42+
console.log(home + " loaded!");
43+
}
44+
45+
resetFrameRootView = async () => {
46+
console.log("Setting frame root ...");
47+
const btnResetFrameRootView = await this._driver.findElementByText(resetFrameRootView);
48+
await btnResetFrameRootView.tap();
49+
}
50+
51+
resetLayoutRootView = async () => {
52+
console.log("Setting layout root ...");
53+
const btnResetLayoutRootView = await this._driver.findElementByText(resetLayoutRootView);
54+
await btnResetLayoutRootView.tap();
55+
}
56+
57+
resetTabRootView = async () => {
58+
const btnResetTabRootView = await this._driver.findElementByText(resetTabRootView);
59+
await btnResetTabRootView.tap();
60+
}
61+
62+
loadedTabRootView = async () => {
63+
const tabFirst = await this._driver.findElementByText(first);
64+
assert.isTrue(await tabFirst.isDisplayed());
65+
console.log("Tab root view loaded!");
66+
}
67+
68+
setFrameRootView = async () => {
69+
// should load frame root, no need to verify it is loaded
70+
await this.loadedHome();
71+
await this.resetFrameRootView();
72+
}
73+
74+
setTabRootView = async () => {
75+
// should load tab root
76+
await this.loadedHome();
77+
try {
78+
await this.loadedTabRootView();
79+
} catch (err) {
80+
await this.resetTabRootView();
81+
await this.loadedTabRootView();
82+
}
83+
}
84+
85+
setLayoutRootView = async () => {
86+
// should load layout root, no need to verify it is loaded
87+
await this.loadedHome();
88+
await this.resetLayoutRootView();
89+
}
90+
91+
showModalFrame = async () => {
92+
const btnModalFrame = await this._driver.findElementByText(modalFrame);
93+
await btnModalFrame.tap();
94+
}
95+
96+
loadedModalFrame = async () => {
97+
const lblModal = await this._driver.findElementByText(modal);
98+
assert.isTrue(await lblModal.isDisplayed());
99+
console.log(modal + " loaded!");
100+
}
101+
102+
showModalNoFrame = async () => {
103+
const btnModalPage = await this._driver.findElementByText(modalNoFrame);
104+
await btnModalPage.tap();
105+
}
106+
107+
loadedModalPage = async () => {
108+
const btnShowNestedModalPage = await this._driver.findElementByText(showNestedModalPage);
109+
assert.isTrue(await btnShowNestedModalPage.isDisplayed());
110+
console.log("Modal Page loaded!");
111+
}
112+
113+
showModalLayout = async () => {
114+
const btnModalLayout = await this._driver.findElementByText(modalLayout);
115+
await btnModalLayout.tap();
116+
}
117+
118+
loadedModalLayout = async () => {
119+
await this.loadedModalFrame();
120+
}
121+
122+
showModalTabView = async () => {
123+
const btnModalTabView = await this._driver.findElementByText(modalTabView);
124+
await btnModalTabView.tap();
125+
}
126+
127+
loadedModalTabView = async () => {
128+
const itemModalFirst = await this._driver.findElementByText(modalFirst);
129+
assert.isTrue(await itemModalFirst.isDisplayed());
130+
console.log("Modal TabView loaded!");
131+
}
132+
133+
navigateToSecondPage = async () => {
134+
const btnNavToSecondPage = await this._driver.findElementByText(navToSecondPage);
135+
await btnNavToSecondPage.tap();
136+
}
137+
138+
showDialogConfirm = async () => {
139+
const btnShowDialogConfirm = await this._driver.findElementByText(showDialog);
140+
await btnShowDialogConfirm.tap();
141+
}
142+
143+
navigateToFirstItem = async () => {
144+
const itemModalFirst = await this._driver.findElementByText(modalFirst);
145+
await itemModalFirst.tap();
146+
}
147+
148+
navigateToSecondItem = async () => {
149+
const itemModalSecond = await this._driver.findElementByText(modalSecond);
150+
await itemModalSecond.tap();
151+
}
152+
153+
loadedModalNoFrame = async () => {
154+
const btnShowDialogConfirm = await this._driver.findElementByText(showDialog);
155+
const btnCloseModal = await this._driver.findElementByText(closeModal);
156+
assert.isTrue(await btnShowDialogConfirm.isDisplayed());
157+
assert.isTrue(await btnCloseModal.isDisplayed());
158+
console.log("Modal Without Frame shown!");
159+
}
160+
161+
loadedConfirmDialog = async () => {
162+
const lblDialogMessage = await this._driver.findElementByText(confirmDialogMessage);
163+
assert.isTrue(await lblDialogMessage.isDisplayed());
164+
console.log(dialogConfirm + " shown!");
165+
}
166+
167+
loadedSecondPage = async () => {
168+
const lblModalSecond = await this._driver.findElementByText(modalSecond);
169+
assert.isTrue(await lblModalSecond.isDisplayed());
170+
console.log(modalSecond + " loaded!");
171+
}
172+
173+
loadedFirstItem = async () => {
174+
const lblModal = await this._driver.findElementByText(modal);
175+
assert.isTrue(await lblModal.isDisplayed());
176+
console.log("First Item loaded!");
177+
}
178+
179+
loadedSecondItem = async () => {
180+
const btnGoBack = await this._driver.findElementByText(goBack);
181+
assert.isTrue(await btnGoBack.isDisplayed());
182+
console.log("Second Item loaded!");
183+
}
184+
185+
closeDialog = async () => {
186+
const btnYesDialog = await this._driver.findElementByText(confirmDialog);
187+
await btnYesDialog.tap();
188+
}
189+
190+
goBackFromSecondPage = async () => {
191+
const btnGoBackFromSecondPage = await this._driver.findElementByText(goBack);
192+
await btnGoBackFromSecondPage.tap();
193+
}
194+
195+
showNestedModalFrame = async () => {
196+
const btnShowNestedModalFrame = await this._driver.findElementByText(showNestedModalFrame);
197+
await btnShowNestedModalFrame.tap();
198+
}
199+
200+
loadedNestedModalFrame = async () => {
201+
const lblModalNested = await this._driver.findElementByText(modalNested);
202+
assert.isTrue(await lblModalNested.isDisplayed());
203+
console.log(modalNested + " loaded!");
204+
}
205+
206+
closeModalNested = async () => {
207+
const btnCloseNestedModal = await this._driver.findElementByText(closeModalNested);
208+
await btnCloseNestedModal.tap();
209+
}
210+
211+
showNestedModalPage = async () => {
212+
const btnShowNestedModalPage = await this._driver.findElementByText(showNestedModalPage);
213+
await btnShowNestedModalPage.tap();
214+
}
215+
216+
loadedNestedModalPage = async () => {
217+
const btnCloseModalNested = await this._driver.findElementByText(closeModalNested);
218+
assert.isTrue(await btnCloseModalNested.isDisplayed());
219+
console.log(closeModalNested + " loaded!");
220+
}
221+
222+
closeModal = async () => {
223+
const btnCloseModal = await this._driver.findElementByText(closeModal);
224+
await btnCloseModal.tap();
225+
}
226+
227+
loadModalNoFrame = async () => {
228+
try {
229+
await this.loadedModalNoFrame();
230+
} catch (err) {
231+
// should show modal with no frame
232+
await this.showModalNoFrame();
233+
await this.loadedModalNoFrame();
234+
}
235+
}
236+
237+
loadModalFrame = async () => {
238+
try {
239+
await this.loadedModalFrame();
240+
} catch (err) {
241+
// should show modal page with frame
242+
await this.showModalFrame();
243+
await this.loadedModalFrame();
244+
}
245+
}
246+
}

0 commit comments

Comments
 (0)