diff --git a/e2e/ui-tests-app/app/bottom-navigation/background-color-page.xml b/e2e/ui-tests-app/app/bottom-navigation/background-color-page.xml
index e6debcf2a..c956f3e9f 100644
--- a/e2e/ui-tests-app/app/bottom-navigation/background-color-page.xml
+++ b/e2e/ui-tests-app/app/bottom-navigation/background-color-page.xml
@@ -3,7 +3,7 @@
-
+
diff --git a/e2e/ui-tests-app/app/bottom-navigation/binding-page.xml b/e2e/ui-tests-app/app/bottom-navigation/binding-page.xml
index 0e1114b16..c13ec26c9 100644
--- a/e2e/ui-tests-app/app/bottom-navigation/binding-page.xml
+++ b/e2e/ui-tests-app/app/bottom-navigation/binding-page.xml
@@ -10,7 +10,7 @@
-
+
diff --git a/e2e/ui-tests-app/app/bottom-navigation/bottom-navigation-css-page.xml b/e2e/ui-tests-app/app/bottom-navigation/bottom-navigation-css-page.xml
index ae33a63ec..7ff61c180 100644
--- a/e2e/ui-tests-app/app/bottom-navigation/bottom-navigation-css-page.xml
+++ b/e2e/ui-tests-app/app/bottom-navigation/bottom-navigation-css-page.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/e2e/ui-tests-app/app/bottom-navigation/bottom-navigation-page.xml b/e2e/ui-tests-app/app/bottom-navigation/bottom-navigation-page.xml
index 3d126c4bd..66266e701 100644
--- a/e2e/ui-tests-app/app/bottom-navigation/bottom-navigation-page.xml
+++ b/e2e/ui-tests-app/app/bottom-navigation/bottom-navigation-page.xml
@@ -18,7 +18,7 @@
-->
-
+
diff --git a/e2e/ui-tests-app/app/bottom-navigation/color-page.xml b/e2e/ui-tests-app/app/bottom-navigation/color-page.xml
index 1c4661d9b..b8c3e9d4e 100644
--- a/e2e/ui-tests-app/app/bottom-navigation/color-page.xml
+++ b/e2e/ui-tests-app/app/bottom-navigation/color-page.xml
@@ -3,7 +3,7 @@
-
+
diff --git a/e2e/ui-tests-app/app/bottom-navigation/fancy-fonts-page.xml b/e2e/ui-tests-app/app/bottom-navigation/fancy-fonts-page.xml
index fe7a3dfe6..004de8346 100644
--- a/e2e/ui-tests-app/app/bottom-navigation/fancy-fonts-page.xml
+++ b/e2e/ui-tests-app/app/bottom-navigation/fancy-fonts-page.xml
@@ -1,13 +1,10 @@
-
+
-
-
-
-
+
diff --git a/e2e/ui-tests-app/app/bottom-navigation/font-icons-page.xml b/e2e/ui-tests-app/app/bottom-navigation/font-icons-page.xml
index fa4461325..644cdb121 100644
--- a/e2e/ui-tests-app/app/bottom-navigation/font-icons-page.xml
+++ b/e2e/ui-tests-app/app/bottom-navigation/font-icons-page.xml
@@ -3,7 +3,7 @@
-
+
diff --git a/e2e/ui-tests-app/app/bottom-navigation/font-page.xml b/e2e/ui-tests-app/app/bottom-navigation/font-page.xml
index 0d88fce33..6da1c6233 100644
--- a/e2e/ui-tests-app/app/bottom-navigation/font-page.xml
+++ b/e2e/ui-tests-app/app/bottom-navigation/font-page.xml
@@ -3,7 +3,7 @@
-
+
diff --git a/e2e/ui-tests-app/app/bottom-navigation/icon-change-page.xml b/e2e/ui-tests-app/app/bottom-navigation/icon-change-page.xml
index e280e9eda..40bf3afac 100644
--- a/e2e/ui-tests-app/app/bottom-navigation/icon-change-page.xml
+++ b/e2e/ui-tests-app/app/bottom-navigation/icon-change-page.xml
@@ -2,7 +2,7 @@
-
+
diff --git a/e2e/ui-tests-app/app/bottom-navigation/icon-title-placement-page.xml b/e2e/ui-tests-app/app/bottom-navigation/icon-title-placement-page.xml
index 41b424a21..4849f5629 100644
--- a/e2e/ui-tests-app/app/bottom-navigation/icon-title-placement-page.xml
+++ b/e2e/ui-tests-app/app/bottom-navigation/icon-title-placement-page.xml
@@ -2,7 +2,7 @@
-
+
diff --git a/e2e/ui-tests-app/app/bottom-navigation/issue-5470-page.xml b/e2e/ui-tests-app/app/bottom-navigation/issue-5470-page.xml
index 98f63e0aa..4b5bb5a38 100644
--- a/e2e/ui-tests-app/app/bottom-navigation/issue-5470-page.xml
+++ b/e2e/ui-tests-app/app/bottom-navigation/issue-5470-page.xml
@@ -3,7 +3,7 @@
-
+
diff --git a/e2e/ui-tests-app/app/bottom-navigation/text-transform-page.xml b/e2e/ui-tests-app/app/bottom-navigation/text-transform-page.xml
index 1685010c3..33db487c6 100644
--- a/e2e/ui-tests-app/app/bottom-navigation/text-transform-page.xml
+++ b/e2e/ui-tests-app/app/bottom-navigation/text-transform-page.xml
@@ -3,7 +3,7 @@
-
+
diff --git a/e2e/ui-tests-app/app/tabs/background-color-page.xml b/e2e/ui-tests-app/app/tabs/background-color-page.xml
index 6020389f5..e5d39ea0a 100644
--- a/e2e/ui-tests-app/app/tabs/background-color-page.xml
+++ b/e2e/ui-tests-app/app/tabs/background-color-page.xml
@@ -3,7 +3,7 @@
-
+
diff --git a/e2e/ui-tests-app/app/tabs/color-page.css b/e2e/ui-tests-app/app/tabs/color-page.css
index 962c9a3cd..b417cfecf 100644
--- a/e2e/ui-tests-app/app/tabs/color-page.css
+++ b/e2e/ui-tests-app/app/tabs/color-page.css
@@ -3,7 +3,7 @@ Tabs {
}
TabContentItem.special {
- color: olive;
+ color: green;
}
TabStrip {
diff --git a/e2e/ui-tests-app/app/tabs/color-page.xml b/e2e/ui-tests-app/app/tabs/color-page.xml
index 8322d1390..be732a6c3 100644
--- a/e2e/ui-tests-app/app/tabs/color-page.xml
+++ b/e2e/ui-tests-app/app/tabs/color-page.xml
@@ -3,7 +3,7 @@
-
+
diff --git a/e2e/ui-tests-app/app/tabs/default-page.xml b/e2e/ui-tests-app/app/tabs/default-page.xml
index 396478113..e16c9aa92 100644
--- a/e2e/ui-tests-app/app/tabs/default-page.xml
+++ b/e2e/ui-tests-app/app/tabs/default-page.xml
@@ -18,7 +18,7 @@
-->
-
+
diff --git a/e2e/ui-tests-app/app/tabs/font-icons-page.xml b/e2e/ui-tests-app/app/tabs/font-icons-page.xml
index 143361800..317d5def4 100644
--- a/e2e/ui-tests-app/app/tabs/font-icons-page.xml
+++ b/e2e/ui-tests-app/app/tabs/font-icons-page.xml
@@ -3,7 +3,7 @@
-
+
diff --git a/e2e/ui-tests-app/app/tabs/font-page.xml b/e2e/ui-tests-app/app/tabs/font-page.xml
index 01f45df56..a0c8bfa60 100644
--- a/e2e/ui-tests-app/app/tabs/font-page.xml
+++ b/e2e/ui-tests-app/app/tabs/font-page.xml
@@ -3,7 +3,7 @@
-
+
diff --git a/e2e/ui-tests-app/app/tabs/highlight-color-page.xml b/e2e/ui-tests-app/app/tabs/highlight-color-page.xml
index b322f1aa3..9916ca7fd 100644
--- a/e2e/ui-tests-app/app/tabs/highlight-color-page.xml
+++ b/e2e/ui-tests-app/app/tabs/highlight-color-page.xml
@@ -3,7 +3,7 @@
-
+
diff --git a/e2e/ui-tests-app/app/tabs/icon-change-page.xml b/e2e/ui-tests-app/app/tabs/icon-change-page.xml
index e6ddb809f..28f78dc9f 100644
--- a/e2e/ui-tests-app/app/tabs/icon-change-page.xml
+++ b/e2e/ui-tests-app/app/tabs/icon-change-page.xml
@@ -2,7 +2,7 @@
-
+
diff --git a/e2e/ui-tests-app/app/tabs/icon-title-placement-page.xml b/e2e/ui-tests-app/app/tabs/icon-title-placement-page.xml
index 4caed0e7e..46d669e49 100644
--- a/e2e/ui-tests-app/app/tabs/icon-title-placement-page.xml
+++ b/e2e/ui-tests-app/app/tabs/icon-title-placement-page.xml
@@ -2,7 +2,7 @@
-
+
diff --git a/e2e/ui-tests-app/app/tabs/issue-5470-page.xml b/e2e/ui-tests-app/app/tabs/issue-5470-page.xml
index a47f48d18..290d67e7d 100644
--- a/e2e/ui-tests-app/app/tabs/issue-5470-page.xml
+++ b/e2e/ui-tests-app/app/tabs/issue-5470-page.xml
@@ -3,7 +3,7 @@
-
+
diff --git a/e2e/ui-tests-app/app/tabs/main-page.ts b/e2e/ui-tests-app/app/tabs/main-page.ts
index b364799e1..65d381991 100644
--- a/e2e/ui-tests-app/app/tabs/main-page.ts
+++ b/e2e/ui-tests-app/app/tabs/main-page.ts
@@ -21,7 +21,7 @@ export function loadExamples() {
examples.set("highlight-color", "tabs/highlight-color-page");
examples.set("icon-title-placement", "tabs/icon-title-placement-page");
examples.set("icon-change", "tabs/icon-change-page");
- examples.set("swipe-enabled", "tabs/swipe-enabled-page");
+ examples.set("swipe-disabled", "tabs/swipe-disabled-page");
examples.set("strip-item", "tabs/tab-strip-item-page");
examples.set("strip-items", "tabs/tab-strip-items-page");
examples.set("tabs-position", "tabs/tabs-position-page");
diff --git a/e2e/ui-tests-app/app/tabs/swipe-enabled-page.xml b/e2e/ui-tests-app/app/tabs/swipe-disabled-page.xml
similarity index 88%
rename from e2e/ui-tests-app/app/tabs/swipe-enabled-page.xml
rename to e2e/ui-tests-app/app/tabs/swipe-disabled-page.xml
index 19e6a1a59..96f1898c2 100644
--- a/e2e/ui-tests-app/app/tabs/swipe-enabled-page.xml
+++ b/e2e/ui-tests-app/app/tabs/swipe-disabled-page.xml
@@ -1,9 +1,9 @@
-
+
-
+
diff --git a/e2e/ui-tests-app/app/tabs/tab-strip-item-page.xml b/e2e/ui-tests-app/app/tabs/tab-strip-item-page.xml
index e5f9c41ba..e51a2ad66 100644
--- a/e2e/ui-tests-app/app/tabs/tab-strip-item-page.xml
+++ b/e2e/ui-tests-app/app/tabs/tab-strip-item-page.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/e2e/ui-tests-app/app/tabs/tab-strip-items-page.xml b/e2e/ui-tests-app/app/tabs/tab-strip-items-page.xml
index 323109806..e98df7aa5 100644
--- a/e2e/ui-tests-app/app/tabs/tab-strip-items-page.xml
+++ b/e2e/ui-tests-app/app/tabs/tab-strip-items-page.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/e2e/ui-tests-app/app/tabs/tabs-binding-page.ts b/e2e/ui-tests-app/app/tabs/tabs-binding-page.ts
index 2d4491834..40e37b2a8 100644
--- a/e2e/ui-tests-app/app/tabs/tabs-binding-page.ts
+++ b/e2e/ui-tests-app/app/tabs/tabs-binding-page.ts
@@ -1,12 +1,17 @@
import * as vmModule from "./tabs-binding-view-model";
-var viewModel = vmModule.tabsBindingNavigationViewModel;
+// var viewModel = vmModule.tabsBindingNavigationViewModel;
+
+// export function tabsLoaded(args) {
+// let tabs = args.object;
+// tabs.bindingContext = viewModel;
+// }
+
+// export function addTabs(args) {
+// viewModel.createItems();
+// }
export function tabsLoaded(args) {
- let tabs = args.object;
- tabs.bindingContext = viewModel;
-}
-
-export function addTabs(args) {
- viewModel.createItems();
+ const page = args.object.page;
+ page.bindingContext = vmModule.tabsBindingNavigationViewModel;
}
\ No newline at end of file
diff --git a/e2e/ui-tests-app/app/tabs/tabs-binding-page.xml b/e2e/ui-tests-app/app/tabs/tabs-binding-page.xml
index 2293cae68..82cc74a49 100644
--- a/e2e/ui-tests-app/app/tabs/tabs-binding-page.xml
+++ b/e2e/ui-tests-app/app/tabs/tabs-binding-page.xml
@@ -4,9 +4,12 @@
-
+
+
+
+
-
+
diff --git a/e2e/ui-tests-app/app/tabs/tabs-binding-view-model.ts b/e2e/ui-tests-app/app/tabs/tabs-binding-view-model.ts
index 4663e428b..c745121c1 100644
--- a/e2e/ui-tests-app/app/tabs/tabs-binding-view-model.ts
+++ b/e2e/ui-tests-app/app/tabs/tabs-binding-view-model.ts
@@ -18,6 +18,8 @@ export class TabsBindingNavigationViewModel extends Observable {
}
createItems() {
+ console.log("Create item");
+
const _tabStripItems = new Array();
const _tabContentItems = new Array();
@@ -31,6 +33,12 @@ export class TabsBindingNavigationViewModel extends Observable {
this.itemsCount++;
}
+ public removeLastItem() {
+ console.log("Remove item");
+ this.tabStripItems.pop();
+ this.tabContentItems.pop();
+ }
+
private createTabStripItem(index: number): TabStripItem {
const item = new TabStripItem();
item.title = "Item " + index;
diff --git a/e2e/ui-tests-app/app/tabs/tabs-page.xml b/e2e/ui-tests-app/app/tabs/tabs-page.xml
index 396478113..e16c9aa92 100644
--- a/e2e/ui-tests-app/app/tabs/tabs-page.xml
+++ b/e2e/ui-tests-app/app/tabs/tabs-page.xml
@@ -18,7 +18,7 @@
-->
-
+
diff --git a/e2e/ui-tests-app/app/tabs/tabs-position-page.xml b/e2e/ui-tests-app/app/tabs/tabs-position-page.xml
index 5019962cc..41c34a0c5 100644
--- a/e2e/ui-tests-app/app/tabs/tabs-position-page.xml
+++ b/e2e/ui-tests-app/app/tabs/tabs-position-page.xml
@@ -3,7 +3,7 @@
-
+
diff --git a/e2e/ui-tests-app/app/tabs/text-transform-page.xml b/e2e/ui-tests-app/app/tabs/text-transform-page.xml
index 125b4368d..c80979319 100644
--- a/e2e/ui-tests-app/app/tabs/text-transform-page.xml
+++ b/e2e/ui-tests-app/app/tabs/text-transform-page.xml
@@ -3,7 +3,7 @@
-
+
diff --git a/e2e/ui-tests-app/e2e/helpers/navigation-helper.ts b/e2e/ui-tests-app/e2e/helpers/navigation-helper.ts
index 45cf6b0f7..ecf6ca396 100644
--- a/e2e/ui-tests-app/e2e/helpers/navigation-helper.ts
+++ b/e2e/ui-tests-app/e2e/helpers/navigation-helper.ts
@@ -1,4 +1,4 @@
-import { AppiumDriver, IRectangle, logInfo } from "nativescript-dev-appium";
+import { AppiumDriver, IRectangle, logInfo, logWarn, Point } from "nativescript-dev-appium";
export enum ElementCacheStrategy {
allAtOnce,
@@ -103,7 +103,19 @@ export class NavigationHelper {
async swipeBackToSuitMainPage() {
logInfo(`Swipe to back`);
- throw new Error("Not implemented!");
+ const startPoint = {};
+ const endPoint = {};
+
+ if (this._driver.isIOS) {
+ startPoint.x = 5;
+ startPoint.y = this._driver.nsCapabilities.device.viewportRect.y / this._driver.nsCapabilities.device.config.density;
+ endPoint.x = (this._driver.nsCapabilities.device.viewportRect.width / this._driver.nsCapabilities.device.config.density) - 5;
+ endPoint.y = startPoint.y;
+
+ await this._driver.swipe(startPoint, endPoint);
+ } else {
+ logWarn("Swipe back is not supported from android!");
+ }
}
private async cacheAllElements(cachedElements: ICachedElement) {
diff --git a/e2e/ui-tests-app/e2e/suites/tab-navigation/README.md b/e2e/ui-tests-app/e2e/suites/tab-navigation/README.md
new file mode 100644
index 000000000..30386bdf5
--- /dev/null
+++ b/e2e/ui-tests-app/e2e/suites/tab-navigation/README.md
@@ -0,0 +1,4 @@
+Please make sure that the
+
+
+
\ No newline at end of file
diff --git a/e2e/ui-tests-app/e2e/suites/tab-navigation/bottom-navigation/bottom-navigation-base-page.ts b/e2e/ui-tests-app/e2e/suites/tab-navigation/bottom-navigation/bottom-navigation-base-page.ts
index 53d8561cb..8c6e47aae 100644
--- a/e2e/ui-tests-app/e2e/suites/tab-navigation/bottom-navigation/bottom-navigation-base-page.ts
+++ b/e2e/ui-tests-app/e2e/suites/tab-navigation/bottom-navigation/bottom-navigation-base-page.ts
@@ -1,55 +1,21 @@
-import { AppiumDriver, Point, IRectangle, UIElement, logInfo } from "nativescript-dev-appium";
-import { PageObjectBaseModel } from "../../../page-object-base-model";
+import { AppiumDriver } from "nativescript-dev-appium";
import { ElementCacheStrategy } from "../../../helpers/navigation-helper";
-import { ImageOptions } from "nativescript-dev-appium/lib/image-options";
+import { TabNavigationBasePage } from "../tab-navigation-base-page";
-export class BottomNavigationBasePage extends PageObjectBaseModel {
- private _bottomNavigatioinTabRect: IRectangle;
- private _bottomNavigationItems: Array;
- private _bottomNavigationItemsRects: Map = new Map();
-
- constructor(_driver: AppiumDriver, elementCacheStrategy?: ElementCacheStrategy) {
- super(_driver, ["bottom-navigation"], elementCacheStrategy);
- this._driver.imageHelper.options.waitBeforeCreatingInitialImageCapture = 6000;
- this._driver.imageHelper.options.keepOriginalImageSize = false;
- this._driver.imageHelper.options.tolerance = 0;
- this._driver.imageHelper.options.toleranceType = ImageOptions.pixel;
- // this._driver.imageHelper.options.donNotAppendActualSuffixOnIntialImageCapture = true;
- this._driver.imageHelper.options.timeOutSeconds = 7;
+export class BottomNavigationBasePage extends TabNavigationBasePage {
+ private readonly mainWidgetXPath: string;
+ constructor(_driver: AppiumDriver) {
+ super(_driver, ["bottom-navigation"]);
+ this.mainWidgetXPath = this._driver.isIOS ?
+ `//XCUIElementTypeOther[@name="tabNavigation"]/XCUIElementTypeTabBar`
+ : `//android.view.ViewGroup[@content-desc="tabNavigation"]/android.widget.LinearLayout`;
}
- async init(subSuiteName: string) {
- this._naviagtionLinks.push(subSuiteName);
- await super.initSuite();
+ async getItems() {
+ return await this._driver.findElementsByXPath(`${this.mainWidgetXPath}/*`);
}
- async refreshBottomNavigationTab() {
- let bottomNavigatioinTab;
- if (this._driver.nsCapabilities.isAndroid) {
- bottomNavigatioinTab = await this._driver.findElementByXPath(`//android.view.ViewGroup[@content-desc="bottomNavigation"]/android.widget.LinearLayout`);
- this._bottomNavigationItems = await this._driver.findElementsByXPath(`//android.view.ViewGroup[@content-desc="bottomNavigation"]/android.widget.LinearLayout/android.widget.LinearLayout/*`);
- } else {
- bottomNavigatioinTab = await this._driver.findElementByXPath(`//XCUIElementTypeOther[@name="bottomNavigation"]/XCUIElementTypeTabBar`);
- this._bottomNavigationItems = await this._driver.findElementsByXPath(`//XCUIElementTypeOther[@name="bottomNavigation"]/XCUIElementTypeTabBar/*`);
- }
-
- for (let index = 0; index < this._bottomNavigationItems.length; index++) {
- const point = await this._bottomNavigationItems[index].getRectangle();
- this._bottomNavigationItemsRects.set(index, new Point(point.x + point.width / 2, point.y + point.height / 2));
- }
-
- this._bottomNavigatioinTabRect = await bottomNavigatioinTab.getRectangle();
-
- return this._bottomNavigatioinTabRect;
- }
-
- async tabOnItem(index: number) {
- if (this._bottomNavigationItemsRects.size === 0) {
- await this.refreshBottomNavigationTab();
- }
- const point = this._bottomNavigationItemsRects.get(index);
- logInfo(`Click on TabStrip index: ${index}`);
- await this._driver.clickPoint(point.x, point.y);
-
+ async mainWidget() {
+ return await this._driver.findElementByXPath(this.mainWidgetXPath);
}
}
\ No newline at end of file
diff --git a/e2e/ui-tests-app/e2e/suites/tab-navigation/bottom-navigation/bottom-navigation-css-properties.e2e-spec.ts b/e2e/ui-tests-app/e2e/suites/tab-navigation/bottom-navigation/bottom-navigation-css-properties.e2e-spec.ts
index 06227fe7b..e863057fd 100644
--- a/e2e/ui-tests-app/e2e/suites/tab-navigation/bottom-navigation/bottom-navigation-css-properties.e2e-spec.ts
+++ b/e2e/ui-tests-app/e2e/suites/tab-navigation/bottom-navigation/bottom-navigation-css-properties.e2e-spec.ts
@@ -25,7 +25,7 @@ describe(`${imagePrefix}-suite`, async function () {
nsCapabilities.testReporter.context = this;
driver = await createDriver();
await driver.restartApp();
- bottomNavigationBasePage = new BottomNavigationBasePage(driver, ElementCacheStrategy.none);
+ bottomNavigationBasePage = new BottomNavigationBasePage(driver);
await bottomNavigationBasePage.init("css-text-transform");
});
diff --git a/e2e/ui-tests-app/e2e/suites/tab-navigation/bottom-navigation/bottom-navigation.e2e-spec.ts b/e2e/ui-tests-app/e2e/suites/tab-navigation/bottom-navigation/bottom-navigation.e2e-spec.ts
index 51e6d5369..220a99e99 100644
--- a/e2e/ui-tests-app/e2e/suites/tab-navigation/bottom-navigation/bottom-navigation.e2e-spec.ts
+++ b/e2e/ui-tests-app/e2e/suites/tab-navigation/bottom-navigation/bottom-navigation.e2e-spec.ts
@@ -2,7 +2,6 @@ import { nsCapabilities, createDriver, AppiumDriver, DeviceOrientaion, logInfo }
import { BottomNavigationBasePage } from "./bottom-navigation-base-page";
import { assert } from "chai";
import { setImageName } from "../../../helpers/image-helper";
-import { Platform } from "mobile-devices-controller";
const suite = "tab-navigation";
const spec = "bottom-navigation";
@@ -17,7 +16,6 @@ describe(`${suite}-${spec}-suite`, async function () {
await driver.restartApp();
bottomNavigationBasePage = new BottomNavigationBasePage(driver);
await bottomNavigationBasePage.initSuite();
- driver.imageHelper.options.keepOriginalImageSize = true;
});
after(async function () {
@@ -44,7 +42,6 @@ describe(`${suite}-${spec}-suite`, async function () {
await bottomNavigationBasePage.navigateToSample("background-color");
await driver.imageHelper.compareScreen();
- await bottomNavigationBasePage.refreshBottomNavigationTab();
await bottomNavigationBasePage.tabOnItem(1);
await driver.imageHelper.compareScreen();
@@ -74,7 +71,7 @@ describe(`${suite}-${spec}-suite`, async function () {
await clickAddTab();
await driver.imageHelper.compareScreen();
- await bottomNavigationBasePage.refreshBottomNavigationTab();
+ await bottomNavigationBasePage.refreshTabItems();
await bottomNavigationBasePage.tabOnItem(1);
await driver.imageHelper.compareScreen();
@@ -111,7 +108,7 @@ describe(`${suite}-${spec}-suite`, async function () {
await addTabBtn.tap();
await driver.imageHelper.compareScreen();
- await bottomNavigationBasePage.refreshBottomNavigationTab();
+ await bottomNavigationBasePage.refreshTabItems();
await bottomNavigationBasePage.tabOnItem(1);
await driver.imageHelper.compareScreen();
@@ -128,7 +125,6 @@ describe(`${suite}-${spec}-suite`, async function () {
await goToSecondBtn.tap();
await driver.imageHelper.compareScreen();
- await bottomNavigationBasePage.refreshBottomNavigationTab();
await bottomNavigationBasePage.tabOnItem(1);
await driver.imageHelper.compareScreen();
@@ -140,7 +136,6 @@ describe(`${suite}-${spec}-suite`, async function () {
await bottomNavigationBasePage.navigateToSample("color");
await driver.imageHelper.compareScreen();
- await bottomNavigationBasePage.refreshBottomNavigationTab();
await bottomNavigationBasePage.tabOnItem(1);
await driver.imageHelper.compareScreen();
@@ -151,7 +146,6 @@ describe(`${suite}-${spec}-suite`, async function () {
it(`${spec}-fancy-fonts-select-tabs`, async function () {
await bottomNavigationBasePage.navigateToSample("fancy-fonts");
await driver.imageHelper.compareScreen();
- await bottomNavigationBasePage.refreshBottomNavigationTab();
for (let index = 1; index < 4; index++) {
await bottomNavigationBasePage.tabOnItem(index);
@@ -164,7 +158,6 @@ describe(`${suite}-${spec}-suite`, async function () {
it(`${spec}-fancy-fonts-selected-index`, async function () {
await bottomNavigationBasePage.navigateToSample("fancy-fonts");
- await bottomNavigationBasePage.refreshBottomNavigationTab();
let selectSecondTabFromCodeBehind = await driver.waitForElement("selectSecondTab");
logInfo(`Click on "select second tab button"`);
@@ -212,7 +205,6 @@ describe(`${suite}-${spec}-suite`, async function () {
it(`${spec}-font-icons`, async function () {
await bottomNavigationBasePage.navigateToSample("font-icons");
- await bottomNavigationBasePage.refreshBottomNavigationTab();
await driver.imageHelper.compareScreen();
await bottomNavigationBasePage.tabOnItem(1);
@@ -228,7 +220,6 @@ describe(`${suite}-${spec}-suite`, async function () {
it(`${spec}-icon-change`, async function () {
await bottomNavigationBasePage.navigateToSample("icon-change");
- await bottomNavigationBasePage.refreshBottomNavigationTab();
await bottomNavigationBasePage.tabOnItem(1);
await driver.imageHelper.compareScreen();
@@ -249,7 +240,6 @@ describe(`${suite}-${spec}-suite`, async function () {
it(`${spec}-5470-issue`, async function () {
await bottomNavigationBasePage.navigateToSample("issue-5470");
- await bottomNavigationBasePage.refreshBottomNavigationTab();
await driver.imageHelper.compareScreen();
await bottomNavigationBasePage.tabOnItem(1);
@@ -261,7 +251,6 @@ describe(`${suite}-${spec}-suite`, async function () {
it(`${spec}-text-transform`, async function () {
await bottomNavigationBasePage.navigateToSample("text-transform");
- await bottomNavigationBasePage.refreshBottomNavigationTab();
await driver.imageHelper.compareScreen();
await bottomNavigationBasePage.tabOnItem(1);
@@ -273,7 +262,6 @@ describe(`${suite}-${spec}-suite`, async function () {
it(`${spec}-fonts`, async function () {
await bottomNavigationBasePage.navigateToSample("text-transform");
- await bottomNavigationBasePage.refreshBottomNavigationTab();
await driver.imageHelper.compareScreen();
await bottomNavigationBasePage.tabOnItem(1);
diff --git a/e2e/ui-tests-app/e2e/suites/tab-navigation/tab-navigation-base-page.ts b/e2e/ui-tests-app/e2e/suites/tab-navigation/tab-navigation-base-page.ts
new file mode 100644
index 000000000..1b8481d4a
--- /dev/null
+++ b/e2e/ui-tests-app/e2e/suites/tab-navigation/tab-navigation-base-page.ts
@@ -0,0 +1,79 @@
+import { AppiumDriver, Point, IRectangle, UIElement, logInfo, logWarn } from "nativescript-dev-appium";
+import { PageObjectBaseModel } from "../../page-object-base-model";
+import { ElementCacheStrategy } from "../../helpers/navigation-helper";
+import { ImageOptions } from "nativescript-dev-appium/lib/image-options";
+
+export abstract class TabNavigationBasePage extends PageObjectBaseModel {
+ protected bottomNavigatioinTabRect: IRectangle;
+ protected bottomNavigationItems: Array;
+ protected bottomNavigationItemsRects: Map = new Map();
+
+ constructor(_driver: AppiumDriver, navigationLinks: Array) {
+ super(_driver, navigationLinks, ElementCacheStrategy.none);
+ this._driver.imageHelper.options.waitBeforeCreatingInitialImageCapture = 6000;
+ this._driver.imageHelper.options.keepOriginalImageSize = false;
+ this._driver.imageHelper.options.tolerance = 0;
+ this._driver.imageHelper.options.toleranceType = ImageOptions.pixel;
+ this._driver.imageHelper.options.donNotAppendActualSuffixOnIntialImageCapture = true;
+ this._driver.imageHelper.options.timeOutSeconds = 7;
+ }
+
+ abstract async mainWidget();
+ abstract async getItems();
+
+ async init(subSuiteName: string) {
+ this._naviagtionLinks.push(subSuiteName);
+ await super.initSuite();
+ }
+
+ async navigateToSample(sample: string) {
+ await super.navigateToSample(sample);
+ await this.refreshTabItems();
+ }
+
+ async refreshTabItems() {
+ this.bottomNavigationItems = await this.getItems();
+
+ for (let index = 0; index < this.bottomNavigationItems.length; index++) {
+ const point = await this.bottomNavigationItems[index].getRectangle();
+ this.bottomNavigationItemsRects.set(index, new Point(point.x + point.width / 2, point.y + point.height / 2));
+ }
+ }
+
+ async refreshTabWidget() {
+ const bottomNavigatioinTab = await this.mainWidget();
+ this.bottomNavigatioinTabRect = await bottomNavigatioinTab.getRectangle();
+ }
+
+ async tabOnItem(index: number) {
+ if (this.bottomNavigationItemsRects.size === 0) {
+ await this.refreshTabItems();
+ }
+ const point = this.bottomNavigationItemsRects.get(index);
+ logInfo(`Click on TabStrip index: ${index}`);
+ await this._driver.clickPoint(point.x, point.y);
+ }
+
+ async swipeRightToLeft() {
+ const startPoint = {};
+ const endPoint = {};
+
+ if (this._driver.isIOS) {
+ startPoint.x = (this._driver.nsCapabilities.device.viewportRect.x / this._driver.nsCapabilities.device.config.density
+ + this._driver.nsCapabilities.device.viewportRect.width / this._driver.nsCapabilities.device.config.density);
+ startPoint.y = this._driver.nsCapabilities.device.viewportRect.y / this._driver.nsCapabilities.device.config.density
+ + (this._driver.nsCapabilities.device.viewportRect.height / this._driver.nsCapabilities.device.config.density) / 2;
+ endPoint.x = this._driver.nsCapabilities.device.viewportRect.x / this._driver.nsCapabilities.device.config.density;
+ endPoint.y = startPoint.y;
+ } else {
+ startPoint.x = this._driver.nsCapabilities.device.viewportRect.width - 5;
+ startPoint.y = this._driver.nsCapabilities.device.viewportRect.y
+ + this._driver.nsCapabilities.device.viewportRect.height / 2;
+ endPoint.x = this._driver.nsCapabilities.device.viewportRect.x + 5;
+ endPoint.y = startPoint.y;
+ }
+
+ await this._driver.swipe(startPoint, endPoint);
+ logWarn("Swipe from right to left!");
+ }
+}
\ No newline at end of file
diff --git a/e2e/ui-tests-app/e2e/suites/tab-navigation/tab-view/tab-view-base-page.ts b/e2e/ui-tests-app/e2e/suites/tab-navigation/tab-view/tab-view-base-page.ts
index 30ab43766..bab586b5b 100644
--- a/e2e/ui-tests-app/e2e/suites/tab-navigation/tab-view/tab-view-base-page.ts
+++ b/e2e/ui-tests-app/e2e/suites/tab-navigation/tab-view/tab-view-base-page.ts
@@ -12,7 +12,7 @@ export class TabViewBasePage extends PageObjectBaseModel {
async init(subSuiteName: string) {
this._naviagtionLinks.push(subSuiteName);
await super.initSuite();
- this._driver.imageHelper.options.keepOriginalImageSize = true;
+ this._driver.imageHelper.options.keepOriginalImageSize = false;
this._driver.imageHelper.options.tolerance = 0;
this._driver.imageHelper.options.toleranceType = ImageOptions.pixel;
}
diff --git a/e2e/ui-tests-app/e2e/suites/tab-navigation/tab-view/tab-view-common-tests.e2e-spec.ts b/e2e/ui-tests-app/e2e/suites/tab-navigation/tab-view/tab-view-common-tests.e2e-spec.ts
index 860587e03..0e742a4fc 100644
--- a/e2e/ui-tests-app/e2e/suites/tab-navigation/tab-view/tab-view-common-tests.e2e-spec.ts
+++ b/e2e/ui-tests-app/e2e/suites/tab-navigation/tab-view/tab-view-common-tests.e2e-spec.ts
@@ -76,8 +76,8 @@ describe(`${suite}-${spec}-suite`, async function () {
y: driver.nsCapabilities.device.viewportRect.height / 2
},
{
- yOffset: 0,
- xOffset: driver.nsCapabilities.device.viewportRect.x + 10
+ y: 0,
+ x: driver.nsCapabilities.device.viewportRect.x + 10
}
, 100);
await driver.imageHelper.compareScreen({ timeOutSeconds: 5, tolerance: 0.01 });
diff --git a/e2e/ui-tests-app/e2e/suites/tab-navigation/tabs/tab-tests.e2e-spec.ts b/e2e/ui-tests-app/e2e/suites/tab-navigation/tabs/tab-tests.e2e-spec.ts
deleted file mode 100644
index 3c58a6470..000000000
--- a/e2e/ui-tests-app/e2e/suites/tab-navigation/tabs/tab-tests.e2e-spec.ts
+++ /dev/null
@@ -1,104 +0,0 @@
-import { nsCapabilities, createDriver, AppiumDriver } from "nativescript-dev-appium";
-import { TabsViewBasePage } from "./tabs-view-base-page";
-import { Platform } from "mobile-devices-controller";
-import { assert } from "chai";
-import { setImageName } from "../../../helpers/image-helper";
-
-const suite = "tab-navigation";
-const spec = "tabs";
-
-describe(`${suite}-${spec}-suite`, async function () {
- let driver: AppiumDriver;
- let tabsViewBasePage: TabsViewBasePage;
-
- before(async function () {
- nsCapabilities.testReporter.context = this;
- driver = await createDriver();
- await driver.restartApp();
- tabsViewBasePage = new TabsViewBasePage(driver);
- await tabsViewBasePage.initSuite();
- });
-
- after(async function () {
- await tabsViewBasePage.endSuite();
- });
-
- beforeEach(async function () {
- driver.imageHelper.testName = setImageName(suite, spec, this.currentTest.title);
- driver.imageHelper.options = {
- tolerance: 0.01,
- timeOutSeconds: 5,
- donNotAppendActualSuffixOnIntialImageCapture: true
- };
- });
-
- afterEach(async function () {
- if (this.currentTest.state === "failed") {
- await driver.logTestArtifacts(this.currentTest.title);
- await driver.resetApp();
- await tabsViewBasePage.initSuite();
- }
- });
-
- it(`${spec}-background-color`, async function () {
- await tabsViewBasePage.navigateToSample("background-color");
-
- await driver.imageHelper.compareScreen();
- assert.isTrue(driver.imageHelper.hasImageComparisonPassed());
-
- await tabsViewBasePage.navigateBackToSuitMainPage();
- });
-
- it(`${spec}-color`, async function () {
- await tabsViewBasePage.navigateToSample("color");
- await driver.imageHelper.compareScreen();
- assert.isTrue(driver.imageHelper.hasImageComparisonPassed());
- await tabsViewBasePage.navigateBackToSuitMainPage();
- });
-
- it(`${spec}-icon-change`, async function () {
- await tabsViewBasePage.navigateToSample("tab-view-icon-change");
- const index = driver.nsCapabilities.device.platform === Platform.IOS
- ? (+driver.nsCapabilities.device.apiLevel >= 11 ? 2 : 3) : 1;
-
- let btns = await driver.findElementsByClassName(driver.locators.button, 5000);
- await btns[index].tap();
- await driver.imageHelper.compareScreen();
-
- btns = await driver.findElementsByClassName(driver.locators.button, 5000);
- await btns[index - 1].tap();
- await driver.imageHelper.compareScreen();
-
- assert.isTrue(driver.imageHelper.hasImageComparisonPassed());
-
- await tabsViewBasePage.navigateBackToSuitMainPage();
- });
-
- it(`${spec}-icon-title-placment`, async function () {
- await tabsViewBasePage.navigateToSample("icon-title-placement");
- await driver.imageHelper.compareScreen();
- assert.isTrue(driver.imageHelper.hasImageComparisonPassed());
- await tabsViewBasePage.navigateBackToSuitMainPage();
- });
-
- it(`${spec}-issue-5470`, async function () {
- await tabsViewBasePage.navigateToSample("issue-5470");
- await driver.imageHelper.compareScreen();
- assert.isTrue(driver.imageHelper.hasImageComparisonPassed());
- await tabsViewBasePage.navigateBackToSuitMainPage();
- });
-
- it(`${spec}-swipe-enabled`, async function () {
- await tabsViewBasePage.navigateToSample("swipe-enabled");
- await driver.imageHelper.compareScreen();
- assert.isTrue(driver.imageHelper.hasImageComparisonPassed());
- await tabsViewBasePage.navigateBackToSuitMainPage();
- });
-
- it(`${spec}-tabs-position`, async function () {
- await tabsViewBasePage.navigateToSample("tabs-position");
- await driver.imageHelper.compareScreen();
- assert.isTrue(driver.imageHelper.hasImageComparisonPassed());
- await tabsViewBasePage.navigateBackToSuitMainPage();
- });
-});
\ No newline at end of file
diff --git a/e2e/ui-tests-app/e2e/suites/tab-navigation/tabs/tabs-tests.e2e-spec.ts b/e2e/ui-tests-app/e2e/suites/tab-navigation/tabs/tabs-tests.e2e-spec.ts
new file mode 100644
index 000000000..6e013c502
--- /dev/null
+++ b/e2e/ui-tests-app/e2e/suites/tab-navigation/tabs/tabs-tests.e2e-spec.ts
@@ -0,0 +1,254 @@
+import { nsCapabilities, createDriver, AppiumDriver } from "nativescript-dev-appium";
+import { TabsViewBasePage } from "./tabs-view-base-page";
+import { assert } from "chai";
+import { setImageName } from "../../../helpers/image-helper";
+
+const suite = "tab-navigation";
+const spec = "tabs";
+const imagePrefix = `${suite}-${spec}`
+
+describe(`${imagePrefix}-suite`, async function () {
+ let driver: AppiumDriver;
+ let tabsViewBasePage: TabsViewBasePage;
+
+ before(async function () {
+ nsCapabilities.testReporter.context = this;
+ driver = await createDriver();
+ await driver.restartApp();
+ tabsViewBasePage = new TabsViewBasePage(driver);
+ await tabsViewBasePage.initSuite();
+ });
+
+ after(async function () {
+ await tabsViewBasePage.endSuite();
+ });
+
+ beforeEach(async function () {
+ driver.imageHelper.testName = setImageName(suite, spec, this.currentTest.title);
+ driver.imageHelper.options = {
+ donNotAppendActualSuffixOnIntialImageCapture: true
+ };
+ });
+
+ afterEach(async function () {
+ if (this.currentTest.state === "failed") {
+ await driver.logTestArtifacts(this.currentTest.title);
+ await driver.resetApp();
+ await tabsViewBasePage.initSuite();
+ }
+ });
+
+ it(`${imagePrefix}-background-color`, async function () {
+ await tabsViewBasePage.navigateToSample("background-color");
+ await driver.imageHelper.compareScreen();
+
+ await tabsViewBasePage.tabOnItem(1);
+ await driver.imageHelper.compareScreen();
+
+ assert.isTrue(driver.imageHelper.hasImageComparisonPassed());
+
+ await tabsViewBasePage.navigateBackToSuitMainPage();
+ });
+
+ // not all css is applied.
+ it(`${imagePrefix}-color`, async function () {
+ await tabsViewBasePage.navigateToSample("color");
+ await driver.imageHelper.compareScreen();
+
+ await tabsViewBasePage.tabOnItem(1);
+ await driver.imageHelper.compareScreen();
+
+ assert.isTrue(driver.imageHelper.hasImageComparisonPassed());
+ await tabsViewBasePage.navigateBackToSuitMainPage();
+ });
+
+ it(`${imagePrefix}-font`, async function () {
+ await tabsViewBasePage.navigateToSample("font");
+ await driver.imageHelper.compareScreen();
+
+ await tabsViewBasePage.tabOnItem(1);
+ await driver.imageHelper.compareScreen();
+
+ await tabsViewBasePage.tabOnItem(0);
+ await driver.imageHelper.compareScreen();
+
+ assert.isTrue(driver.imageHelper.hasImageComparisonPassed());
+
+ await tabsViewBasePage.navigateBackToSuitMainPage();
+ });
+
+ it(`${imagePrefix}-font-icons`, async function () {
+ await tabsViewBasePage.navigateToSample("font-icons");
+ await driver.imageHelper.compareScreen();
+
+ await tabsViewBasePage.tabOnItem(1);
+ await driver.imageHelper.compareScreen();
+
+ await tabsViewBasePage.tabOnItem(2);
+ await driver.imageHelper.compareScreen();
+
+ assert.isTrue(driver.imageHelper.hasImageComparisonPassed());
+
+ await tabsViewBasePage.navigateBackToSuitMainPage();
+ });
+
+ it(`${imagePrefix}-highlight-color`, async function () {
+ await tabsViewBasePage.navigateToSample("highlight-color");
+ await driver.imageHelper.compareScreen();
+
+ await tabsViewBasePage.tabOnItem(1);
+ await driver.imageHelper.compareScreen();
+
+ assert.isTrue(driver.imageHelper.hasImageComparisonPassed());
+
+ await tabsViewBasePage.navigateBackToSuitMainPage();
+ });
+
+ it(`${imagePrefix}-icon-change`, async function () {
+ await tabsViewBasePage.navigateToSample("icon-change");
+
+ await driver.imageHelper.compareScreen();
+
+ await tabsViewBasePage.tabOnItem(1);
+ await driver.imageHelper.compareScreen();
+
+ await tabsViewBasePage.tabOnItem(0);
+ await driver.imageHelper.compareScreen();
+
+ assert.isTrue(driver.imageHelper.hasImageComparisonPassed());
+
+ await tabsViewBasePage.navigateBackToSuitMainPage();
+ });
+
+ it(`${imagePrefix}-icon-title-placment`, async function () {
+ await tabsViewBasePage.navigateToSample("icon-title-placement");
+ await driver.imageHelper.compareScreen();
+ assert.isTrue(driver.imageHelper.hasImageComparisonPassed());
+ await tabsViewBasePage.navigateBackToSuitMainPage();
+ });
+
+ it(`${imagePrefix}-issue-5470`, async function () {
+ await tabsViewBasePage.navigateToSample("issue-5470");
+ await driver.imageHelper.compareScreen();
+
+ await tabsViewBasePage.tabOnItem(1);
+ await driver.imageHelper.compareScreen();
+
+ assert.isTrue(driver.imageHelper.hasImageComparisonPassed());
+ await tabsViewBasePage.navigateBackToSuitMainPage();
+ });
+
+ it(`${imagePrefix}-strip-item`, async function () {
+ await tabsViewBasePage.navigateToSample("strip-item");
+ await driver.imageHelper.compareScreen();
+
+ assert.isTrue(driver.imageHelper.hasImageComparisonPassed());
+ await tabsViewBasePage.navigateBackToSuitMainPage();
+ });
+
+ it(`${imagePrefix}-android-swipe-disabled`, async function () {
+ if (driver.isIOS) {
+ this.skip();
+ }
+ await tabsViewBasePage.navigateToSample("swipe-disabled");
+
+ await tabsViewBasePage.swipeRightToLeft();
+ await driver.imageHelper.compareScreen();
+
+ assert.isTrue(driver.imageHelper.hasImageComparisonPassed());
+
+ await tabsViewBasePage.navigateBackToSuitMainPage();
+ });
+
+ it(`${imagePrefix}-swipe`, async function () {
+ await tabsViewBasePage.navigateToSample("tabs");
+ await tabsViewBasePage.swipeRightToLeft();
+
+ await driver.imageHelper.compareScreen();
+ await tabsViewBasePage.swipeRightToLeft();
+
+ await driver.imageHelper.compareScreen();
+ assert.isTrue(driver.imageHelper.hasImageComparisonPassed());
+
+ await tabsViewBasePage.navigateBackToSuitMainPage();
+ });
+
+ /*
+ * Bug
+ */
+ it(`${imagePrefix}-binding-add-items`, async function () {
+ this.skip();
+
+ await tabsViewBasePage.navigateToSample("tabs-binding");
+ await driver.imageHelper.compareScreen();
+
+ const addTabBtn = await driver.waitForElement("add-tab");
+ const addTabBtnRect = await addTabBtn.getActualRectangle();
+ const clickAddTab = async () => {
+ await driver.clickPoint((addTabBtnRect.y + addTabBtnRect.width) / 2, (addTabBtnRect.x + addTabBtnRect.height) / 2);
+ };
+
+ await clickAddTab();
+ await driver.imageHelper.compareScreen();
+
+ await clickAddTab();
+ await driver.imageHelper.compareScreen();
+
+ await tabsViewBasePage.refreshTabItems();
+ await tabsViewBasePage.tabOnItem(1);
+ await driver.imageHelper.compareScreen();
+
+ assert.isTrue(driver.imageHelper.hasImageComparisonPassed());
+
+ await tabsViewBasePage.navigateBackToSuitMainPage();
+ });
+
+ /*
+ * Bug
+ */
+ it(`${imagePrefix}-binding-remove-items`, async function () {
+ this.skip();
+
+ await tabsViewBasePage.navigateToSample("tabs-binding");
+ await driver.imageHelper.compareScreen();
+
+ const removeTabBtn = await driver.waitForElement("remove-last-tab");
+ const removeTabBtnRect = await removeTabBtn.getActualRectangle();
+ const clickRemoveTab = async () => {
+ await driver.clickPoint((removeTabBtnRect.y + removeTabBtnRect.width) / 2, (removeTabBtnRect.x + removeTabBtnRect.height) / 2);
+ };
+
+ await clickRemoveTab();
+ await driver.imageHelper.compareScreen();
+
+ // Remove all items.
+ await clickRemoveTab();
+ await driver.imageHelper.compareScreen();
+
+ // add items
+ const addTabBtn = await driver.waitForElement("add-tab");
+ await addTabBtn.tap();
+ await addTabBtn.tap();
+ await driver.imageHelper.compareScreen();
+
+ await tabsViewBasePage.refreshTabItems();
+ await tabsViewBasePage.tabOnItem(1);
+ await driver.imageHelper.compareScreen();
+
+ assert.isTrue(driver.imageHelper.hasImageComparisonPassed());
+
+ await tabsViewBasePage.navigateBackToSuitMainPage();
+ });
+
+ it(`${imagePrefix}-text-transform`, async function () {
+ await tabsViewBasePage.navigateToSample("text-transform");
+ await driver.imageHelper.compareScreen();
+
+ await tabsViewBasePage.refreshTabItems();
+ await tabsViewBasePage.tabOnItem(1);
+ await driver.imageHelper.compareScreen();
+
+ assert.isTrue(driver.imageHelper.hasImageComparisonPassed());
+ await tabsViewBasePage.navigateBackToSuitMainPage();
+ });
+});
\ No newline at end of file
diff --git a/e2e/ui-tests-app/e2e/suites/tab-navigation/tabs/tabs-view-base-page.ts b/e2e/ui-tests-app/e2e/suites/tab-navigation/tabs/tabs-view-base-page.ts
index a5f7392dd..17ce64af3 100644
--- a/e2e/ui-tests-app/e2e/suites/tab-navigation/tabs/tabs-view-base-page.ts
+++ b/e2e/ui-tests-app/e2e/suites/tab-navigation/tabs/tabs-view-base-page.ts
@@ -1,15 +1,24 @@
import { AppiumDriver } from "nativescript-dev-appium";
-import { PageObjectBaseModel } from "../../../page-object-base-model";
-import { ElementCacheStrategy } from "../../../helpers/navigation-helper";
+import { TabNavigationBasePage } from "../tab-navigation-base-page";
-export class TabsViewBasePage extends PageObjectBaseModel {
-
- constructor(_driver: AppiumDriver, elementCacheStrategy?: ElementCacheStrategy) {
- super(_driver, ["tabs"], elementCacheStrategy);
+export class TabsViewBasePage extends TabNavigationBasePage {
+ private readonly mainWidgetXPath: string;
+ constructor(_driver: AppiumDriver) {
+ super(_driver, ["tabs"]);
+ this.mainWidgetXPath = this._driver.isIOS ?
+ `//XCUIElementTypeOther[@name="tabNavigation"]/XCUIElementTypeOther[1]/XCUIElementTypeOther[1]/XCUIElementTypeCollectionView`
+ : `//android.view.ViewGroup[@content-desc="tabNavigation"]/android.widget.HorizontalScrollView/android.widget.LinearLayout`;
}
- async init(subSuiteName: string) {
- this._naviagtionLinks.push(subSuiteName);
- await super.initSuite();
+ async getItems() {
+ const items = await this._driver.findElementsByXPath(`${this.mainWidgetXPath}/*`);
+ if (this._driver.isIOS) {
+ items.shift();
+ }
+ return items;
+ }
+
+ async mainWidget() {
+ return await this._driver.findElementByXPath(this.mainWidgetXPath);
}
}
\ No newline at end of file