Skip to content

Commit a46694a

Browse files
vakrilovSvetoslavTsenov
vakrilov
authored andcommitted
test: Tests for tests with page outlet and navigation in multiple tabs
1 parent 764e909 commit a46694a

File tree

5 files changed

+208
-92
lines changed

5 files changed

+208
-92
lines changed

e2e/router-tab-view/app/app.component.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,12 @@ export class AppComponent {
1616

1717
constructor(router: Router, location: NSLocationStrategy) {
1818
router.events.subscribe(e => {
19-
console.log("[ROUTER]: " + e.toString());
19+
// console.log("[ROUTER]: " + e.toString());
2020

2121
if (e instanceof NavigationEnd) {
2222
this.isInitialNavigation = false;
23-
console.log("[ROUTER] NAVIGATION END. Location history:");
23+
console.log("[ROUTER]: " + e.toString());
24+
// console.log("[ROUTER] NAVIGATION END. Location history:");
2425
location._getStates().forEach(state => {
2526
console.log(`[page: ${state.isPageNavigation}] ${state.url}`);
2627
});
@@ -29,10 +30,9 @@ export class AppComponent {
2930
}
3031

3132
onActivate(tabIndex: number) {
32-
console.log(`---> onActivate tabIndex: ${tabIndex} isInitialNavigation: ${this.isInitialNavigation}`);
33-
34-
if (!this.isInitialNavigation) {
35-
this.tabView.selectedIndex = tabIndex;
36-
}
33+
// if (!this.isInitialNavigation && this.tabView.selectedIndex !== tabIndex) {
34+
// console.log(`---> onActivate changing tabIndex from: ${this.tabView.selectedIndex} to: ${tabIndex}`);
35+
// this.tabView.selectedIndex = tabIndex;
36+
// }
3737
}
3838
}

e2e/router-tab-view/app/app.module.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ import { AppComponent } from "./app.component";
55

66
import { DataService } from "./data.service";
77

8+
import { enable as traceEnable, addCategories } from "tns-core-modules/trace";
9+
import { routerTraceCategory } from "nativescript-angular/trace";
10+
11+
// addCategories(routerTraceCategory);
12+
traceEnable();
13+
814
class MyErrorHandler implements ErrorHandler {
915
handleError(error) {
1016
console.log("### ErrorHandler Error: " + error.toString());

e2e/router-tab-view/app/player/players.component.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
<StackLayout row="1">
1212
<Button text="local" nsRouterLink="../player/2">
1313
</Button>
14-
15-
14+
<Button text="local flip duration-prop" nsRouterLink="../player/2" pageTransition="flip" pageTransitionDuration="3000">
15+
</Button>
1616
<Button text="absolute" (tap)="navigateAbs()">
1717
</Button>
1818
</StackLayout>

e2e/router-tab-view/e2e/sample.e2e-spec.ts

Lines changed: 0 additions & 83 deletions
This file was deleted.
Lines changed: 193 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,193 @@
1+
import { AppiumDriver, createDriver, SearchOptions } from "nativescript-dev-appium";
2+
import { assert } from "chai";
3+
4+
describe("TabView with page-router-outlet in each tab", () => {
5+
let driver: AppiumDriver;
6+
7+
before(async () => {
8+
driver = await createDriver();
9+
});
10+
11+
after(async () => {
12+
await driver.quit();
13+
console.log("Quit driver!");
14+
});
15+
16+
afterEach(async function () {
17+
if (this.currentTest.state === "failed") {
18+
await driver.logScreenshot(this.currentTest.title);
19+
}
20+
});
21+
22+
it("should find an tabs by text", async () => {
23+
await driver.findElementByText("Players", SearchOptions.exact);
24+
await driver.findElementByText("Teams", SearchOptions.exact);
25+
await driver.findElementByText("Player List", SearchOptions.exact);
26+
});
27+
28+
it("should be able to switch between tabs", async () => {
29+
await driver.findElementByText("Player List", SearchOptions.exact);
30+
31+
await selectTeamTab(driver);
32+
33+
await selectPlayerTab(driver);
34+
});
35+
36+
it("should go forward and go back on first(player) tab", async () => {
37+
await driver.findElementByText("Player List", SearchOptions.exact);
38+
39+
await navigateToPlayerItem(driver, "Player One", "1");
40+
41+
await driver.navBack();
42+
await driver.findElementByText("Player List", SearchOptions.exact);
43+
});
44+
45+
it("should go forward and go back on second(team) tab", async () => {
46+
await driver.findElementByText("Player List", SearchOptions.exact);
47+
48+
await selectTeamTab(driver);
49+
50+
await navigateToTeamItem(driver, "Team Two", "2");
51+
52+
await driver.navBack();
53+
await driver.findElementByText("Team List", SearchOptions.exact);
54+
55+
await selectPlayerTab(driver);
56+
});
57+
58+
it("should navigate first(player) tab, second(team) tab and back in the same order ", async () => {
59+
await driver.findElementByText("Player List", SearchOptions.exact);
60+
61+
// Go forward in player tab
62+
await navigateToPlayerItem(driver, "Player Three", "3");
63+
64+
// Go forward in team tab
65+
await selectTeamTab(driver);
66+
await navigateToTeamItem(driver, "Team One", "1");
67+
68+
// Check both tabs
69+
await selectPlayerTab(driver, false);
70+
await selectTeamTab(driver, false);
71+
72+
// Go back in team tab
73+
await driver.navBack();
74+
await driver.findElementByText("Team List", SearchOptions.exact);
75+
76+
// Go back in player tab
77+
await selectPlayerTab(driver, false);
78+
await driver.navBack();
79+
await driver.findElementByText("Player List", SearchOptions.exact);
80+
});
81+
82+
it("should navigate second(team) tab, first(player) and back in the same order ", async () => {
83+
await driver.findElementByText("Player List", SearchOptions.exact);
84+
85+
// Go forward in team tab
86+
await selectTeamTab(driver);
87+
await navigateToTeamItem(driver, "Team One", "1");
88+
89+
// Go forward in player tab
90+
await selectPlayerTab(driver);
91+
await navigateToPlayerItem(driver, "Player Three", "3");
92+
93+
// Check both tabs
94+
await selectTeamTab(driver, false);
95+
await selectPlayerTab(driver, false);
96+
97+
// Go back in player tab
98+
await driver.navBack();
99+
await driver.findElementByText("Player List", SearchOptions.exact);
100+
101+
// Go back in team tab
102+
await selectTeamTab(driver, false);
103+
await driver.navBack();
104+
await driver.findElementByText("Team List", SearchOptions.exact);
105+
106+
await selectPlayerTab(driver);
107+
});
108+
109+
it("should navigate first(player) tab, second(team) tab and back in reverse order ", async () => {
110+
await driver.findElementByText("Player List", SearchOptions.exact);
111+
112+
// Go forward in player tab
113+
await navigateToPlayerItem(driver, "Player Three", "3");
114+
115+
// Go forward in team tab
116+
await selectTeamTab(driver);
117+
await navigateToTeamItem(driver, "Team One", "1");
118+
119+
// Go back in player tab
120+
await selectPlayerTab(driver, false);
121+
await driver.navBack();
122+
await driver.findElementByText("Player List", SearchOptions.exact);
123+
124+
// Go back in player tab
125+
await selectTeamTab(driver, false);
126+
await driver.findElementByText("1", SearchOptions.exact);
127+
await driver.findElementByText("Team One", SearchOptions.exact);
128+
129+
await driver.navBack();
130+
await driver.findElementByText("Team List", SearchOptions.exact);
131+
132+
await selectPlayerTab(driver);
133+
});
134+
135+
it("should navigate second(team) tab, first(player) tab and back in reverse order ", async () => {
136+
await driver.findElementByText("Player List", SearchOptions.exact);
137+
138+
// Go forward in team tab
139+
await selectTeamTab(driver);
140+
await navigateToTeamItem(driver, "Team One", "1");
141+
142+
// Go forward in player tab
143+
await selectPlayerTab(driver);
144+
await navigateToPlayerItem(driver, "Player Three", "3");
145+
146+
// Go back in team tab
147+
await selectTeamTab(driver, false);
148+
await driver.navBack();
149+
await driver.findElementByText("Team List", SearchOptions.exact);
150+
151+
// Go back in player tab
152+
await selectPlayerTab(driver, false);
153+
await driver.findElementByText("3", SearchOptions.exact);
154+
await driver.findElementByText("Player Three", SearchOptions.exact);
155+
156+
await driver.navBack();
157+
await driver.findElementByText("Player List", SearchOptions.exact);
158+
});
159+
160+
});
161+
162+
async function navigateToTeamItem(driver: AppiumDriver, name: string, id: string) {
163+
const team = await driver.findElementByText(name, SearchOptions.exact);
164+
await team.click();
165+
await driver.findElementByText("Team Details", SearchOptions.exact);
166+
await driver.findElementByText(id, SearchOptions.exact);
167+
await driver.findElementByText(name, SearchOptions.exact);
168+
}
169+
170+
async function navigateToPlayerItem(driver: AppiumDriver, name: string, id: string) {
171+
let player = await driver.findElementByText(name, SearchOptions.exact);
172+
await player.click();
173+
174+
await driver.findElementByText("Player Details", SearchOptions.exact);
175+
await driver.findElementByText(id, SearchOptions.exact);
176+
await driver.findElementByText(name, SearchOptions.exact);
177+
}
178+
179+
async function selectTeamTab(driver: AppiumDriver, expectList = true) {
180+
const teamsTab = await driver.findElementByText("Teams", SearchOptions.exact);
181+
await teamsTab.click();
182+
183+
const expectedTitle = expectList ? "Team List" : "Team Details";
184+
await driver.findElementByText(expectedTitle, SearchOptions.exact);
185+
}
186+
187+
async function selectPlayerTab(driver: AppiumDriver, expectList = true) {
188+
const playerTab = await driver.findElementByText("Players", SearchOptions.exact);
189+
await playerTab.click();
190+
191+
const expectedTitle = expectList ? "Player List" : "Player Details";
192+
await driver.findElementByText(expectedTitle, SearchOptions.exact);
193+
}

0 commit comments

Comments
 (0)