From 9554db1561363733977b34e8168c3880b77c0f28 Mon Sep 17 00:00:00 2001 From: SvetoslavTsenov Date: Tue, 22 Oct 2019 17:02:07 +0300 Subject: [PATCH] test: separate layout-root suites --- .../.vscode/launch.json | 2 +- e2e/nested-frame-navigation/app/package.json | 5 +- e2e/nested-frame-navigation/e2e/config.ts | 2 +- .../e2e/layout-root/multi-frames.e2e-spec.ts | 227 ++++++++++++++++++ .../single-frame.e2e-spec.ts} | 197 ++------------- 5 files changed, 246 insertions(+), 187 deletions(-) create mode 100644 e2e/nested-frame-navigation/e2e/layout-root/multi-frames.e2e-spec.ts rename e2e/nested-frame-navigation/e2e/{layout-root.e2e-spec.ts => layout-root/single-frame.e2e-spec.ts} (63%) diff --git a/e2e/nested-frame-navigation/.vscode/launch.json b/e2e/nested-frame-navigation/.vscode/launch.json index bbd504901..71d650f2e 100644 --- a/e2e/nested-frame-navigation/.vscode/launch.json +++ b/e2e/nested-frame-navigation/.vscode/launch.json @@ -22,7 +22,7 @@ "4723", "-a", "--grep", - "layout-root" + "layout-root-with-multi-frames" ], "internalConsoleOptions": "openOnSessionStart" }, diff --git a/e2e/nested-frame-navigation/app/package.json b/e2e/nested-frame-navigation/app/package.json index 0d6fdb754..f94c1cdba 100644 --- a/e2e/nested-frame-navigation/app/package.json +++ b/e2e/nested-frame-navigation/app/package.json @@ -1,8 +1,9 @@ { "android": { - "v8Flags": "--expose_gc" + "v8Flags": "--expose_gc", + "markingMode": "none" }, "main": "app.js", "name": "tns-template-hello-world-ts", "version": "3.4.0" -} \ No newline at end of file +} diff --git a/e2e/nested-frame-navigation/e2e/config.ts b/e2e/nested-frame-navigation/e2e/config.ts index 9f2147508..676c73ef2 100644 --- a/e2e/nested-frame-navigation/e2e/config.ts +++ b/e2e/nested-frame-navigation/e2e/config.ts @@ -1,4 +1,4 @@ export const suspendTime = 1; export const appSuspendResume = true; -export const dontKeepActivities = true; +export const dontKeepActivities = process.env["DONT_KEEP_ACTIVITIES"] === "true" ? true : false; export const transitions = ["Default", "None", "Slide", "Flip"]; diff --git a/e2e/nested-frame-navigation/e2e/layout-root/multi-frames.e2e-spec.ts b/e2e/nested-frame-navigation/e2e/layout-root/multi-frames.e2e-spec.ts new file mode 100644 index 000000000..e5fdaa4c9 --- /dev/null +++ b/e2e/nested-frame-navigation/e2e/layout-root/multi-frames.e2e-spec.ts @@ -0,0 +1,227 @@ +import { AppiumDriver, createDriver, logWarn, nsCapabilities } from "nativescript-dev-appium"; + +import { Screen, playersData, somePage, otherPage, teamsData, driverDefaultWaitTime } from "../screen"; +import * as shared from "../shared.e2e-spec"; +import { suspendTime, appSuspendResume, dontKeepActivities, transitions } from "../config"; +import { TabNavigationScreen } from "../tab-navigation-screen"; + +describe("layout-root-with-multi-frames", async function () { + let driver: AppiumDriver; + let screen: Screen; + + before(async function () { + nsCapabilities.testReporter.context = this; + driver = await createDriver(); + await driver.restartApp(); + screen = new TabNavigationScreen(driver); + logWarn("====== layout-root-with-multi-frames ========"); + if (dontKeepActivities) { + await driver.setDontKeepActivities(true); + } + + driver.defaultWaitTime = driverDefaultWaitTime; + }); + + after(async function () { + if (dontKeepActivities) { + await driver.setDontKeepActivities(false); + } + await driver.quit(); + console.log("Quit driver!"); + }); + + afterEach(async function () { + if (this.currentTest.state === "failed") { + await driver.logTestArtifacts(this.currentTest.title); + } + }); + + for (let index = 0; index < transitions.length; index++) { + const transition = transitions[index]; + + const playerOne = playersData[`playerOne${transition}`]; + const playerTwo = playersData[`playerTwo${transition}`]; + const teamOne = teamsData[`teamOne${transition}`]; + + describe(`layout-root-with-multi-frames-transition-${transition}-scenarios:`, async function () { + + before(async function () { + nsCapabilities.testReporter.context = this; + if (transition === "Flip" && + driver.isAndroid && parseInt(driver.platformVersion) === 19) { + // TODO: known issue https://github.com/NativeScript/NativeScript/issues/6798 + console.log("skipping flip transition tests on api level 19"); + this.skip(); + } + }); + + it("loaded layout root with multi nested frames", async function () { + await screen.loadedHome(); + + await screen.navigateToLayoutWithMultiFrame(); + await screen.loadedLayoutWithMultiFrame(); + }); + + it("loaded players list", async function () { + await screen.loadedPlayersList(); + }); + + it("loaded teams list", async function () { + await screen.loadedTeamsList(); + }); + + it("loaded player details and go back twice", async function () { + await shared.testPlayerNavigated(playerTwo, screen); + + if (appSuspendResume) { + await driver.backgroundApp(suspendTime); + await driver.waitForElement(playerTwo.name); // wait for player + } + + await shared.testPlayerNavigatedBack(screen, driver); + + if (appSuspendResume) { + 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 function () { + await shared[`testSomePageNavigated${transition}`](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(); + } + + await screen.loadedPlayersList(); + }); + + it("loaded players details and navigate parent frame and go back", async function () { + await shared.testPlayerNavigated(playerTwo, screen); + + if (appSuspendResume) { + await driver.backgroundApp(suspendTime); + await driver.waitForElement(playerTwo.name); // wait for player + } + + await shared[`testSomePageNavigated${transition}`](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(); + } + + await screen.loadedPlayerDetails(playerTwo); + + await screen.goBackToPlayersList(); + await screen.loadedPlayersList(); + }); + + it("loaded layout root with multi nested frames again", async function () { + await screen.loadedLayoutWithMultiFrame(); + }); + + it("loaded players list", async function () { + await screen.loadedPlayersList(); + }); + + it("loaded teams list", async function () { + await screen.loadedTeamsList(); + }); + + it("mix player and team list actions and go back", async function () { + 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 { + await screen.goBackFromOtherPage(); + } + + if (appSuspendResume) { + await driver.backgroundApp(suspendTime); + await driver.waitForElement(teamOne.name); // wait for teams list + } + + await screen.loadedTeamsList(); + await screen.loadedPlayerDetails(playerTwo); // assert no changes in the sibling frame + + await shared[`testOtherPageNavigated${transition}`](screen); + + if (appSuspendResume) { + await driver.backgroundApp(suspendTime); + await driver.waitForElement(otherPage); // wait for other page + } + + await shared[`testSomePageNavigated${transition}`](screen); + + if (appSuspendResume) { + await driver.backgroundApp(suspendTime); + await driver.waitForElement(somePage); // wait for some page + } + + 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(); + + if (appSuspendResume) { + await driver.backgroundApp(suspendTime); + await driver.waitForElement(playerOne.name); // wait for players list + } + + await screen.goBackFromOtherPage(); + + if (appSuspendResume) { + await driver.backgroundApp(suspendTime); + await driver.waitForElement(teamOne.name); // wait for team + } + + await screen.loadedTeamsList(); + }); + + it("loaded home page again", async function () { + await screen.resetToHome(); + await screen.loadedHome(); + }); + }); + } +}); diff --git a/e2e/nested-frame-navigation/e2e/layout-root.e2e-spec.ts b/e2e/nested-frame-navigation/e2e/layout-root/single-frame.e2e-spec.ts similarity index 63% rename from e2e/nested-frame-navigation/e2e/layout-root.e2e-spec.ts rename to e2e/nested-frame-navigation/e2e/layout-root/single-frame.e2e-spec.ts index 2346a9c1d..91814b623 100644 --- a/e2e/nested-frame-navigation/e2e/layout-root.e2e-spec.ts +++ b/e2e/nested-frame-navigation/e2e/layout-root/single-frame.e2e-spec.ts @@ -1,23 +1,21 @@ import { AppiumDriver, createDriver, logWarn, nsCapabilities } from "nativescript-dev-appium"; -import { Screen, playersData, home, somePage, otherPage, teamsData, driverDefaultWaitTime } from "./screen"; -import * as shared from "./shared.e2e-spec"; -import { suspendTime, appSuspendResume, dontKeepActivities, transitions } from "./config"; -import { TabNavigationScreen } from "./tab-navigation-screen"; +import { Screen, playersData, home, somePage, teamsData, driverDefaultWaitTime } from "../screen"; +import * as shared from "../shared.e2e-spec"; +import { suspendTime, appSuspendResume, dontKeepActivities, transitions } from "../config"; +import { TabNavigationScreen } from "../tab-navigation-screen"; -const rootType = "layout-root"; -describe(rootType, async function () { +describe("layout-root-with-single-frame", async function () { let driver: AppiumDriver; let screen: Screen; before(async function () { nsCapabilities.testReporter.context = this; driver = await createDriver(); + await driver.restartApp(); screen = new TabNavigationScreen(driver); - logWarn("====== layout-root ========"); - if (dontKeepActivities) { - await driver.setDontKeepActivities(true); - } + logWarn("====== layout-root-with-single-frame ========"); + await driver.setDontKeepActivities(dontKeepActivities); driver.defaultWaitTime = driverDefaultWaitTime; }); @@ -43,8 +41,7 @@ describe(rootType, async function () { const playerTwo = playersData[`playerTwo${transition}`]; const teamOne = teamsData[`teamOne${transition}`]; - describe(`${rootType}-transition-${transition}-scenarios:`, async function () { - + describe(`layout-root-with-single-frame-transition-${transition}-scenario:`, async function () { before(async function () { nsCapabilities.testReporter.context = this; if (transition === "Flip" && @@ -140,176 +137,10 @@ describe(rootType, async function () { await driver.waitForElement(home); // wait for home page } }); - - it("loaded layout root with multi nested frames", async function () { - await screen.navigateToLayoutWithMultiFrame(); - await screen.loadedLayoutWithMultiFrame(); - }); - - it("loaded players list", async function () { - await screen.loadedPlayersList(); - }); - - it("loaded teams list", async function () { - await screen.loadedTeamsList(); - }); - - it("loaded player details and go back twice", async function () { - await shared.testPlayerNavigated(playerTwo, screen); - - if (appSuspendResume) { - await driver.backgroundApp(suspendTime); - await driver.waitForElement(playerTwo.name); // wait for player - } - - await shared.testPlayerNavigatedBack(screen, driver); - - if (appSuspendResume) { - 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 function () { - await shared[`testSomePageNavigated${transition}`](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(); - } - - await screen.loadedPlayersList(); - }); - - it("loaded players details and navigate parent frame and go back", async function () { - await shared.testPlayerNavigated(playerTwo, screen); - - if (appSuspendResume) { - await driver.backgroundApp(suspendTime); - await driver.waitForElement(playerTwo.name); // wait for player - } - - await shared[`testSomePageNavigated${transition}`](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(); - } - - await screen.loadedPlayerDetails(playerTwo); - - await screen.goBackToPlayersList(); - await screen.loadedPlayersList(); - }); - - it("loaded layout root with multi nested frames again", async function () { - await screen.loadedLayoutWithMultiFrame(); - }); - - it("loaded players list", async function () { - await screen.loadedPlayersList(); - }); - - it("loaded teams list", async function () { - await screen.loadedTeamsList(); - }); - - it("mix player and team list actions and go back", async function () { - 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 { - await screen.goBackFromOtherPage(); - } - - if (appSuspendResume) { - await driver.backgroundApp(suspendTime); - await driver.waitForElement(teamOne.name); // wait for teams list - } - - await screen.loadedTeamsList(); - await screen.loadedPlayerDetails(playerTwo); // assert no changes in the sibling frame - - await shared[`testOtherPageNavigated${transition}`](screen); - - if (appSuspendResume) { - await driver.backgroundApp(suspendTime); - await driver.waitForElement(otherPage); // wait for other page - } - - await shared[`testSomePageNavigated${transition}`](screen); - - if (appSuspendResume) { - await driver.backgroundApp(suspendTime); - await driver.waitForElement(somePage); // wait for some page - } - - 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(); - - if (appSuspendResume) { - await driver.backgroundApp(suspendTime); - await driver.waitForElement(playerOne.name); // wait for players list - } - - await screen.goBackFromOtherPage(); - - if (appSuspendResume) { - await driver.backgroundApp(suspendTime); - await driver.waitForElement(teamOne.name); // wait for team - } - - await screen.loadedTeamsList(); - }); - - it("loaded home page again", async function () { - await screen.resetToHome(); - await screen.loadedHome(); - }); }); } - describe(`${rootType}-players-list-slide-transition with parent frame default transition:`, async function () { + describe(`layout-root-with-single-frame-players-list-slide-transition with parent frame default transition:`, async function () { const playerOne = playersData["playerOneSlide"]; const playerTwo = playersData["playerTwoSlide"]; @@ -368,7 +199,7 @@ describe(rootType, async function () { }); }); - describe(`${rootType}-players-list-slide-transition with parent frame no transition:`, async function () { + describe(`layout-root-with-single-frame-players-list-slide-transition with parent frame no transition:`, async function () { const playerOne = playersData["playerOneSlide"]; const playerTwo = playersData["playerTwoSlide"]; @@ -427,7 +258,7 @@ describe(rootType, async function () { }); }); - describe(`${rootType}-players-list-flip-transition with parent frame default transition:`, async function () { + describe(`layout-root-with-single-frame-players-list-flip-transition with parent frame default transition:`, async function () { const playerOne = playersData["playerOneFlip"]; const playerTwo = playersData["playerTwoFlip"]; @@ -490,14 +321,14 @@ describe(rootType, async function () { }); }); - describe(`${rootType}-players-list-flip-transition with parent frame no transition:`, async function () { + describe(`layout-root-with-single-frame-players-list-flip-transition with parent frame no transition:`, async function () { const playerOne = playersData["playerOneFlip"]; const playerTwo = playersData["playerTwoFlip"]; before(async function () { nsCapabilities.testReporter.context = this; }); - + it("loaded layout root with nested frames", async function () { await screen.navigateToLayoutWithFrame(); await screen.loadedLayoutWithFrame();