From 4cda0e7345ce02512962905c9400e9dd7ff7cf61 Mon Sep 17 00:00:00 2001 From: Manol Donev Date: Wed, 9 Jan 2019 16:16:08 +0200 Subject: [PATCH] refactor: enable e2e tests with mixed animation nav (#6775) --- .../e2e/frame-root.e2e-spec.ts | 4 +- .../e2e/frame-tab-root.e2e-spec.ts | 4 +- .../e2e/layout-root.e2e-spec.ts | 461 +++++++++--------- e2e/nested-frame-navigation/e2e/screen.ts | 13 +- e2e/nested-frame-navigation/package.json | 2 +- 5 files changed, 242 insertions(+), 242 deletions(-) diff --git a/e2e/nested-frame-navigation/e2e/frame-root.e2e-spec.ts b/e2e/nested-frame-navigation/e2e/frame-root.e2e-spec.ts index 030ed9326..1ff0e1b66 100644 --- a/e2e/nested-frame-navigation/e2e/frame-root.e2e-spec.ts +++ b/e2e/nested-frame-navigation/e2e/frame-root.e2e-spec.ts @@ -1,6 +1,6 @@ import { AppiumDriver, createDriver } from "nativescript-dev-appium"; -import { Screen, playersData, home, somePage, teamsData } from "./screen"; +import { Screen, playersData, home, somePage, teamsData, driverDefaultWaitTime } from "./screen"; import * as shared from "./shared.e2e-spec"; import { suspendTime, appSuspendResume, dontKeepActivities, transitions } from "./config"; @@ -15,7 +15,7 @@ describe("frame-root:", () => { await driver.setDontKeepActivities(true); } - driver.defaultWaitTime = 8000; + driver.defaultWaitTime = driverDefaultWaitTime; }); after(async () => { diff --git a/e2e/nested-frame-navigation/e2e/frame-tab-root.e2e-spec.ts b/e2e/nested-frame-navigation/e2e/frame-tab-root.e2e-spec.ts index 0370db054..b20f86cde 100644 --- a/e2e/nested-frame-navigation/e2e/frame-tab-root.e2e-spec.ts +++ b/e2e/nested-frame-navigation/e2e/frame-tab-root.e2e-spec.ts @@ -1,6 +1,6 @@ import { AppiumDriver, createDriver } from "nativescript-dev-appium"; -import { Screen, playersData, somePage, teamsData } from "./screen"; +import { Screen, playersData, somePage, teamsData, driverDefaultWaitTime } from "./screen"; import * as shared from "./shared.e2e-spec"; import { suspendTime, appSuspendResume, dontKeepActivities, transitions } from "./config"; @@ -22,7 +22,7 @@ describe("frame-tab-root:", () => { await driver.setDontKeepActivities(true); } - driver.defaultWaitTime = 8000; + driver.defaultWaitTime = driverDefaultWaitTime; }); after(async () => { diff --git a/e2e/nested-frame-navigation/e2e/layout-root.e2e-spec.ts b/e2e/nested-frame-navigation/e2e/layout-root.e2e-spec.ts index 2479d2da7..34e1ebc70 100644 --- a/e2e/nested-frame-navigation/e2e/layout-root.e2e-spec.ts +++ b/e2e/nested-frame-navigation/e2e/layout-root.e2e-spec.ts @@ -1,6 +1,6 @@ import { AppiumDriver, createDriver } from "nativescript-dev-appium"; -import { Screen, playersData, home, somePage, otherPage, teamsData } from "./screen"; +import { Screen, playersData, home, somePage, otherPage, teamsData, driverDefaultWaitTime } from "./screen"; import * as shared from "./shared.e2e-spec"; import { suspendTime, appSuspendResume, dontKeepActivities, transitions } from "./config"; @@ -15,7 +15,7 @@ describe("layout-root:", () => { await driver.setDontKeepActivities(true); } - driver.defaultWaitTime = 8000; + driver.defaultWaitTime = driverDefaultWaitTime; }); after(async () => { @@ -42,16 +42,16 @@ describe("layout-root:", () => { it("loaded home page", async () => { await screen.loadedHome(); }); - + it("loaded layout root with nested frames", async () => { await screen.navigateToLayoutWithFrame(); await screen.loadedLayoutWithFrame(); }); - + it("loaded players list", async () => { await screen.loadedPlayersList(); }); - + it("loaded player details and go back twice", async () => { await shared.testPlayerNavigated(playerTwo, screen); @@ -70,7 +70,7 @@ describe("layout-root:", () => { await shared.testPlayerNavigated(playerTwo, screen); await shared.testPlayerNavigatedBack(screen, driver); }); - + it("navigate parent frame and go back", async () => { await shared[`testSomePageNavigated${transition}`](screen); @@ -87,7 +87,7 @@ describe("layout-root:", () => { await screen.loadedPlayersList(); }); - + it("loaded player details and navigate parent frame and go back", async () => { await shared.testPlayerNavigated(playerTwo, screen); @@ -102,7 +102,7 @@ describe("layout-root:", () => { await driver.backgroundApp(suspendTime); await driver.waitForElement(somePage); // wait for some page } - + if (driver.isAndroid) { await driver.navBack(); // some page back navigation } else { @@ -110,11 +110,11 @@ describe("layout-root:", () => { } await screen.loadedPlayerDetails(playerTwo); - + await screen.goBackToPlayersList(); await screen.loadedPlayersList(); }); - + it("loaded home page again", async () => { await screen.resetToHome(); await screen.loadedHome(); @@ -124,20 +124,20 @@ describe("layout-root:", () => { await driver.waitForElement(home); // wait for home page } }); - + it("loaded layout root with multi nested frames", async () => { await screen.navigateToLayoutWithMultiFrame(); await screen.loadedLayoutWithMultiFrame(); }); - + it("loaded players list", async () => { await screen.loadedPlayersList(); }); - + it("loaded teams list", async () => { await screen.loadedTeamsList(); }); - + it("loaded player details and go back twice", async () => { await shared.testPlayerNavigated(playerTwo, screen); @@ -152,11 +152,11 @@ describe("layout-root:", () => { await driver.backgroundApp(suspendTime); await driver.waitForElement(playerOne.name) // wait for players list } - + await shared.testPlayerNavigated(playerTwo, screen); await shared.testPlayerNavigatedBack(screen, driver); }); - + it("navigate players parent frame and go back", async () => { await shared[`testSomePageNavigated${transition}`](screen); @@ -164,7 +164,7 @@ describe("layout-root:", () => { await driver.backgroundApp(suspendTime); await driver.waitForElement(somePage); // wait for some page } - + if (driver.isAndroid) { await driver.navBack(); // some page back navigation } else { @@ -173,7 +173,7 @@ describe("layout-root:", () => { await screen.loadedPlayersList(); }); - + it("loaded players details and navigate parent frame and go back", async () => { await shared.testPlayerNavigated(playerTwo, screen); @@ -188,7 +188,7 @@ describe("layout-root:", () => { await driver.backgroundApp(suspendTime); await driver.waitForElement(somePage); // wait for some page } - + if (driver.isAndroid) { await driver.navBack(); // some page back navigation } else { @@ -196,40 +196,40 @@ describe("layout-root:", () => { } await screen.loadedPlayerDetails(playerTwo); - + await screen.goBackToPlayersList(); await screen.loadedPlayersList(); }); - + it("loaded layout root with multi nested frames again", async () => { await screen.loadedLayoutWithMultiFrame(); }); - + it("loaded players list", async () => { await screen.loadedPlayersList(); }); - + it("loaded teams list", async () => { await screen.loadedTeamsList(); }); - - it ("mix player and team list actions and go back", async () => { + + it("mix player and team list actions and go back", async () => { await shared.testPlayerNavigated(playerTwo, screen); if (appSuspendResume) { await driver.backgroundApp(suspendTime); await driver.waitForElement(playerTwo.name); // wait for player } - + await shared[`testOtherPageNavigated${transition}`](screen); // "teams" parent frame navigation - + if (appSuspendResume) { await driver.backgroundApp(suspendTime); await driver.waitForElement(otherPage); // wait for other page } await screen.loadedPlayerDetails(playerTwo); // assert no changes in the sibling frame - + if (driver.isAndroid) { await driver.navBack(); // other page back navigation } else { @@ -243,7 +243,7 @@ describe("layout-root:", () => { await screen.loadedTeamsList(); await screen.loadedPlayerDetails(playerTwo); // assert no changes in the sibling frame - + await shared[`testOtherPageNavigated${transition}`](screen); if (appSuspendResume) { @@ -259,15 +259,15 @@ describe("layout-root:", () => { } await screen.loadedOtherPage(); // assert no changes in the sibling frame - + if (driver.isAndroid) { await driver.navBack(); // some page back navigation } else { await screen.goBackFromSomePage(); } - + await screen.loadedPlayerDetails(playerTwo); - + await screen.goBackToPlayersList(); await screen.loadedPlayersList(); @@ -275,7 +275,7 @@ describe("layout-root:", () => { await driver.backgroundApp(suspendTime); await driver.waitForElement(playerOne.name); // wait for players list } - + await screen.goBackFromOtherPage(); if (appSuspendResume) { @@ -293,240 +293,239 @@ describe("layout-root:", () => { }); }); - // TODO: uncomment when https://github.com/NativeScript/NativeScript/issues/6630 is fixed - // describe("players list slide transition with parent frame default transition:", () => { - // const playerOne = playersData["playerOneSlide"]; - // const playerTwo = playersData["playerTwoSlide"]; + describe("players list slide transition with parent frame default transition:", () => { + const playerOne = playersData["playerOneSlide"]; + const playerTwo = playersData["playerTwoSlide"]; - // it("loaded layout root with nested frames", async () => { - // await screen.navigateToLayoutWithFrame(); - // await screen.loadedLayoutWithFrame(); - // }); - - // it("loaded players list", async () => { - // await screen.loadedPlayersList(); - // }); + it("loaded layout root with nested frames", async () => { + await screen.navigateToLayoutWithFrame(); + await screen.loadedLayoutWithFrame(); + }); - // it("loaded player details with slide", async () => { - // await shared.testPlayerNavigated(playerTwo, screen); + it("loaded players list", async () => { + await screen.loadedPlayersList(); + }); - // if (appSuspendResume) { - // await driver.backgroundApp(suspendTime); - // await driver.waitForElement(playerTwo.name); // wait for player - // } - // }); - - // it("navigate parent frame and go back", async () => { - // await shared.testSomePageNavigatedDefault(screen); + it("loaded player details with slide", async () => { + await shared.testPlayerNavigated(playerTwo, screen); - // if (appSuspendResume) { - // await driver.backgroundApp(suspendTime); - // await driver.waitForElement(somePage); // wait for some page - // } - - // if (driver.isAndroid) { - // await driver.navBack(); // some page back navigation - // } else { - // await screen.goBackFromSomePage(); - // } + if (appSuspendResume) { + await driver.backgroundApp(suspendTime); + await driver.waitForElement(playerTwo.name); // wait for player + } + }); - // if (appSuspendResume) { - // await driver.backgroundApp(suspendTime); - // await driver.waitForElement(playerTwo.name); // wait for player - // } + it("navigate parent frame and go back", async () => { + await shared.testSomePageNavigatedDefault(screen); - // await screen.loadedPlayerDetails(playerTwo); - // }); + if (appSuspendResume) { + await driver.backgroundApp(suspendTime); + await driver.waitForElement(somePage); // wait for some page + } - // it("loaded player list", async () => { - // await screen.goBackToPlayersList(); + if (driver.isAndroid) { + await driver.navBack(); // some page back navigation + } else { + await screen.goBackFromSomePage(); + } - // if (appSuspendResume) { - // await driver.backgroundApp(suspendTime); - // await driver.waitForElement(playerOne.name); // wait for players list - // } - // }); + if (appSuspendResume) { + await driver.backgroundApp(suspendTime); + await driver.waitForElement(playerTwo.name); // wait for player + } - // it("loaded home page again", async () => { - // await screen.resetToHome(); - // await screen.loadedHome(); - // }); - // }); + await screen.loadedPlayerDetails(playerTwo); + }); - // describe("players list slide transition with parent frame no transition:", () => { - // const playerOne = playersData["playerOneSlide"]; - // const playerTwo = playersData["playerTwoSlide"]; + it("loaded player list", async () => { + await screen.goBackToPlayersList(); - // it("loaded layout root with nested frames", async () => { - // await screen.navigateToLayoutWithFrame(); - // await screen.loadedLayoutWithFrame(); - // }); - - // it("loaded players list", async () => { - // await screen.loadedPlayersList(); - // }); + if (appSuspendResume) { + await driver.backgroundApp(suspendTime); + await driver.waitForElement(playerOne.name); // wait for players list + } + }); - // it("loaded player details with slide", async () => { - // await shared.testPlayerNavigated(playerTwo, screen); + it("loaded home page again", async () => { + await screen.resetToHome(); + await screen.loadedHome(); + }); + }); - // if (appSuspendResume) { - // await driver.backgroundApp(suspendTime); - // await driver.waitForElement(playerTwo.name); // wait for player - // } - // }); - - // it("navigate parent frame and go back", async () => { - // await shared.testSomePageNavigatedNone(screen); + describe("players list slide transition with parent frame no transition:", () => { + const playerOne = playersData["playerOneSlide"]; + const playerTwo = playersData["playerTwoSlide"]; - // if (appSuspendResume) { - // await driver.backgroundApp(suspendTime); - // await driver.waitForElement(somePage); // wait for some page - // } - - // if (driver.isAndroid) { - // await driver.navBack(); // some page back navigation - // } else { - // await screen.goBackFromSomePage(); - // } + it("loaded layout root with nested frames", async () => { + await screen.navigateToLayoutWithFrame(); + await screen.loadedLayoutWithFrame(); + }); - // if (appSuspendResume) { - // await driver.backgroundApp(suspendTime); - // await driver.waitForElement(playerTwo.name); // wait for player - // } + it("loaded players list", async () => { + await screen.loadedPlayersList(); + }); - // await screen.loadedPlayerDetails(playerTwo); - // }); + it("loaded player details with slide", async () => { + await shared.testPlayerNavigated(playerTwo, screen); - // it("loaded player list", async () => { - // await screen.goBackToPlayersList(); + if (appSuspendResume) { + await driver.backgroundApp(suspendTime); + await driver.waitForElement(playerTwo.name); // wait for player + } + }); - // if (appSuspendResume) { - // await driver.backgroundApp(suspendTime); - // await driver.waitForElement(playerOne.name); // wait for players list - // } - // }); + it("navigate parent frame and go back", async () => { + await shared.testSomePageNavigatedNone(screen); - // it("loaded home page again", async () => { - // await screen.resetToHome(); - // await screen.loadedHome(); - // }); - // }); + if (appSuspendResume) { + await driver.backgroundApp(suspendTime); + await driver.waitForElement(somePage); // wait for some page + } - // describe("players list flip transition with parent frame default transition:", () => { - // const playerOne = playersData["playerOneFlip"]; - // const playerTwo = playersData["playerTwoFlip"]; + if (driver.isAndroid) { + await driver.navBack(); // some page back navigation + } else { + await screen.goBackFromSomePage(); + } - // it("loaded layout root with nested frames", async () => { - // await screen.navigateToLayoutWithFrame(); - // await screen.loadedLayoutWithFrame(); - // }); - - // it("loaded players list", async () => { - // await screen.loadedPlayersList(); - // }); + if (appSuspendResume) { + await driver.backgroundApp(suspendTime); + await driver.waitForElement(playerTwo.name); // wait for player + } - // it("loaded player details with slide", async () => { - // await shared.testPlayerNavigated(playerTwo, screen); + await screen.loadedPlayerDetails(playerTwo); + }); - // if (appSuspendResume) { - // await driver.backgroundApp(suspendTime); - // await driver.waitForElement(playerTwo.name); // wait for player - // } - // }); - - // it("navigate parent frame and go back", async () => { - // await shared.testSomePageNavigatedDefault(screen); + it("loaded player list", async () => { + await screen.goBackToPlayersList(); - // if (appSuspendResume) { - // await driver.backgroundApp(suspendTime); - // await driver.waitForElement(somePage); // wait for some page - // } - - // if (driver.isAndroid) { - // await driver.navBack(); // some page back navigation - // } else { - // await screen.goBackFromSomePage(); - // } + if (appSuspendResume) { + await driver.backgroundApp(suspendTime); + await driver.waitForElement(playerOne.name); // wait for players list + } + }); - // if (appSuspendResume) { - // await driver.backgroundApp(suspendTime); - // await driver.waitForElement(playerTwo.name); // wait for player - // } + it("loaded home page again", async () => { + await screen.resetToHome(); + await screen.loadedHome(); + }); + }); - // await screen.loadedPlayerDetails(playerTwo); - // }); + describe("players list flip transition with parent frame default transition:", () => { + const playerOne = playersData["playerOneFlip"]; + const playerTwo = playersData["playerTwoFlip"]; - // it("loaded player list", async () => { - // await screen.goBackToPlayersList(); + it("loaded layout root with nested frames", async () => { + await screen.navigateToLayoutWithFrame(); + await screen.loadedLayoutWithFrame(); + }); - // if (appSuspendResume) { - // await driver.backgroundApp(suspendTime); - // await driver.waitForElement(playerOne.name); // wait for players list - // } - // }); + it("loaded players list", async () => { + await screen.loadedPlayersList(); + }); - // it("loaded home page again", async () => { - // await screen.resetToHome(); - // await screen.loadedHome(); - // }); - // }); + it("loaded player details with slide", async () => { + await shared.testPlayerNavigated(playerTwo, screen); - // describe("players list flip transition with parent frame no transition:", () => { - // const playerOne = playersData["playerOneFlip"]; - // const playerTwo = playersData["playerTwoFlip"]; + if (appSuspendResume) { + await driver.backgroundApp(suspendTime); + await driver.waitForElement(playerTwo.name); // wait for player + } + }); - // it("loaded layout root with nested frames", async () => { - // await screen.navigateToLayoutWithFrame(); - // await screen.loadedLayoutWithFrame(); - // }); - - // it("loaded players list", async () => { - // await screen.loadedPlayersList(); - // }); + it("navigate parent frame and go back", async () => { + await shared.testSomePageNavigatedDefault(screen); - // it("loaded player details with slide", async () => { - // await shared.testPlayerNavigated(playerTwo, screen); + if (appSuspendResume) { + await driver.backgroundApp(suspendTime); + await driver.waitForElement(somePage); // wait for some page + } - // if (appSuspendResume) { - // await driver.backgroundApp(suspendTime); - // await driver.waitForElement(playerTwo.name); // wait for player - // } - // }); - - // it("navigate parent frame and go back", async () => { - // await shared.testSomePageNavigatedNone(screen); + if (driver.isAndroid) { + await driver.navBack(); // some page back navigation + } else { + await screen.goBackFromSomePage(); + } - // if (appSuspendResume) { - // await driver.backgroundApp(suspendTime); - // await driver.waitForElement(somePage); // wait for some page - // } - - // if (driver.isAndroid) { - // await driver.navBack(); // some page back navigation - // } else { - // await screen.goBackFromSomePage(); - // } - - // if (appSuspendResume) { - // await driver.backgroundApp(suspendTime); - // await driver.waitForElement(playerTwo.name); // wait for player - // } + if (appSuspendResume) { + await driver.backgroundApp(suspendTime); + await driver.waitForElement(playerTwo.name); // wait for player + } - // await screen.loadedPlayerDetails(playerTwo); - // }); + await screen.loadedPlayerDetails(playerTwo); + }); - // it("loaded player list", async () => { - // await screen.goBackToPlayersList(); + it("loaded player list", async () => { + await screen.goBackToPlayersList(); - // if (appSuspendResume) { - // await driver.backgroundApp(suspendTime); - // await driver.waitForElement(playerOne.name); // wait for players list - // } - // }); + if (appSuspendResume) { + await driver.backgroundApp(suspendTime); + await driver.waitForElement(playerOne.name); // wait for players list + } + }); - // it("loaded home page again", async () => { - // await screen.resetToHome(); - // await screen.loadedHome(); - // }); - // }); + it("loaded home page again", async () => { + await screen.resetToHome(); + await screen.loadedHome(); + }); + }); + + describe("players list flip transition with parent frame no transition:", () => { + const playerOne = playersData["playerOneFlip"]; + const playerTwo = playersData["playerTwoFlip"]; + + it("loaded layout root with nested frames", async () => { + await screen.navigateToLayoutWithFrame(); + await screen.loadedLayoutWithFrame(); + }); + + it("loaded players list", async () => { + await screen.loadedPlayersList(); + }); + + it("loaded player details with slide", async () => { + await shared.testPlayerNavigated(playerTwo, screen); + + if (appSuspendResume) { + await driver.backgroundApp(suspendTime); + await driver.waitForElement(playerTwo.name); // wait for player + } + }); + + it("navigate parent frame and go back", async () => { + await shared.testSomePageNavigatedNone(screen); + + if (appSuspendResume) { + await driver.backgroundApp(suspendTime); + await driver.waitForElement(somePage); // wait for some page + } + + if (driver.isAndroid) { + await driver.navBack(); // some page back navigation + } else { + await screen.goBackFromSomePage(); + } + + if (appSuspendResume) { + await driver.backgroundApp(suspendTime); + await driver.waitForElement(playerTwo.name); // wait for player + } + + await screen.loadedPlayerDetails(playerTwo); + }); + + it("loaded player list", async () => { + await screen.goBackToPlayersList(); + + if (appSuspendResume) { + await driver.backgroundApp(suspendTime); + await driver.waitForElement(playerOne.name); // wait for players list + } + }); + + it("loaded home page again", async () => { + await screen.resetToHome(); + await screen.loadedHome(); + }); + }); }); diff --git a/e2e/nested-frame-navigation/e2e/screen.ts b/e2e/nested-frame-navigation/e2e/screen.ts index 0ef6ac94b..a15fc3a29 100644 --- a/e2e/nested-frame-navigation/e2e/screen.ts +++ b/e2e/nested-frame-navigation/e2e/screen.ts @@ -36,6 +36,7 @@ const tabTopBack = "tabTopBack"; const tabBottomBack = "tabBottomBack"; const resetApp = "reset app"; +export const driverDefaultWaitTime = 10000; export const home = "Home"; export const somePage = "some page"; export const otherPage = "other page"; @@ -213,7 +214,7 @@ export class Screen { }; resetToHome = async () => { - const btnReset = await this._driver.findElementByAutomationText(resetApp); + const btnReset = await this._driver.waitForElement(resetApp); await btnReset.tap(); }; @@ -246,12 +247,12 @@ export class Screen { } togglePlayersTab = async () => { - const lblPlayers = await this._driver.findElementByAutomationText(players); + const lblPlayers = await this._driver.waitForElement(players); await lblPlayers.tap(); } toggleTeamsTab = async () => { - const lblTeams = await this._driver.findElementByAutomationText(teams); + const lblTeams = await this._driver.waitForElement(teams); await lblTeams.tap(); } @@ -323,7 +324,7 @@ export class Screen { } private navigateToPage = async (page: string) => { - const btnPage = await this._driver.findElementByAutomationText(page); + const btnPage = await this._driver.waitForElement(page); await btnPage.tap(); }; @@ -334,7 +335,7 @@ export class Screen { }; private navigateToItem = async (item: Item) => { - const lblItem = await this._driver.findElementByAutomationText(item.name); + const lblItem = await this._driver.waitForElement(item.name); await lblItem.tap(); } @@ -349,7 +350,7 @@ export class Screen { } private goBack = async (accessibilityId: string) => { - const btnBack = await this._driver.findElementByAccessibilityId(accessibilityId); + const btnBack = await this._driver.waitForElement(accessibilityId); await btnBack.tap(); } } \ No newline at end of file diff --git a/e2e/nested-frame-navigation/package.json b/e2e/nested-frame-navigation/package.json index 42a146577..719d0cd21 100644 --- a/e2e/nested-frame-navigation/package.json +++ b/e2e/nested-frame-navigation/package.json @@ -33,4 +33,4 @@ "e2e-watch": "tsc -p e2e --watch", "clean-e2e": "rimraf 'e2e/**/*.js' 'e2e/**/*.js.map' 'e2e/**/*.map'" } -} \ No newline at end of file +}