diff --git a/e2e/ui-tests-app/app/app-root.xml b/e2e/ui-tests-app/app/app-root.xml
index ae1bc1ebfd..dbf7e70cea 100644
--- a/e2e/ui-tests-app/app/app-root.xml
+++ b/e2e/ui-tests-app/app/app-root.xml
@@ -1 +1 @@
-
\ No newline at end of file
+
diff --git a/e2e/ui-tests-app/app/app.ts b/e2e/ui-tests-app/app/app.ts
index e5658de53b..b2819d214f 100644
--- a/e2e/ui-tests-app/app/app.ts
+++ b/e2e/ui-tests-app/app/app.ts
@@ -24,7 +24,7 @@ application.on("uncaughtError", args => {
}
});
-application.on(application.launchEvent, function(args: application.LaunchEventData) {
+application.on(application.launchEvent, function (args: application.LaunchEventData) {
if (args.android) {
// For Android applications, args.android is an android.content.Intent class.
console.log("### Launched application with: " + args.android + ".");
@@ -34,7 +34,7 @@ application.on(application.launchEvent, function(args: application.LaunchEventDa
}
});
-application.on(application.suspendEvent, function(args: application.ApplicationEventData) {
+application.on(application.suspendEvent, function (args: application.ApplicationEventData) {
if (args.android) {
// For Android applications, args.android is an android activity class.
console.log("#" + ++countSuspend + "# SuspendEvent Activity: " + args.android);
@@ -44,7 +44,7 @@ application.on(application.suspendEvent, function(args: application.ApplicationE
}
});
-application.on(application.resumeEvent, function(args: application.ApplicationEventData) {
+application.on(application.resumeEvent, function (args: application.ApplicationEventData) {
if (args.android) {
// For Android applications, args.android is an android activity class.
console.log("#" + ++countResume + "# ResumeEvent Activity: " + args.android);
@@ -54,7 +54,7 @@ application.on(application.resumeEvent, function(args: application.ApplicationEv
}
});
-application.on(application.exitEvent, function(args: application.ApplicationEventData) {
+application.on(application.exitEvent, function (args: application.ApplicationEventData) {
if (args.android) {
// For Android applications, args.android is an android activity class.
console.log("### ExitEvent Activity: " + args.android);
@@ -64,7 +64,7 @@ application.on(application.exitEvent, function(args: application.ApplicationEven
}
});
-application.on(application.lowMemoryEvent, function(args: application.ApplicationEventData) {
+application.on(application.lowMemoryEvent, function (args: application.ApplicationEventData) {
if (args.android) {
// For Android applications, args.android is an android activity class.
console.log("### LowMemoryEvent Activity: " + args.android);
@@ -74,14 +74,14 @@ application.on(application.lowMemoryEvent, function(args: application.Applicatio
}
});
-application.on(application.uncaughtErrorEvent, function(args: application.UnhandledErrorEventData) {
+application.on(application.uncaughtErrorEvent, function (args: application.UnhandledErrorEventData) {
console.log("### NativeScriptError: " + args.error);
console.log("### nativeException: " + (args.error).nativeException);
console.log("### stackTrace: " + (args.error).stackTrace);
console.log("### stack: " + args.error.stack);
});
-application.on(application.discardedErrorEvent, function(args: application.DiscardedErrorEventData) {
+application.on(application.discardedErrorEvent, function (args: application.DiscardedErrorEventData) {
console.log("### [Discarded] NativeScriptError: " + args.error);
console.log("### [Discarded] nativeException: " + (args.error).nativeException);
console.log("### [Discarded] stackTrace: " + (args.error).stackTrace);
@@ -89,6 +89,8 @@ application.on(application.discardedErrorEvent, function(args: application.Disca
});
application.setCssFileName("app.css");
-
application._start({ moduleName: "main-page" });
+
+// TODO: investigate tab-view -> tabviewcss test crash
+// TODO: investigate css -> layouts border overlap failure
// application.run({ moduleName: "app-root" });
diff --git a/e2e/ui-tests-app/app/bottom-navigation/events-page.ts b/e2e/ui-tests-app/app/bottom-navigation/events-page.ts
new file mode 100644
index 0000000000..27dafcd470
--- /dev/null
+++ b/e2e/ui-tests-app/app/bottom-navigation/events-page.ts
@@ -0,0 +1,42 @@
+import { EventData } from "tns-core-modules/data/observable";
+import { Page } from "tns-core-modules/ui/page";
+import { Tabs, SelectedIndexChangedEventData } from "tns-core-modules/ui/tabs";
+
+export function goToFirst(args: EventData) {
+ console.log("---> goToFirst");
+ const page = (args.object).page;
+ const bottomNav = page.getViewById("bottomNav");
+ bottomNav.selectedIndex = 0;
+}
+
+export function goToSecond(args: EventData) {
+ console.log("---> goToSecond");
+ const page = (args.object).page;
+ const bottomNav = page.getViewById("bottomNav");
+ bottomNav.selectedIndex = 1;
+}
+
+export function goToThird(args: EventData) {
+ console.log("---> goToThird");
+ const page = (args.object).page;
+ const bottomNav = page.getViewById("bottomNav");
+ bottomNav.selectedIndex = 2;
+}
+
+export function onSelectedIndexChanged(args: SelectedIndexChangedEventData) {
+ console.log("---> onSelectedIndexChanged", args.eventName);
+ console.log("---> oldIndex", args.oldIndex);
+ console.log("---> newIndex", args.newIndex);
+}
+
+export function onFirstTabStripItemTap(args: EventData) {
+ console.log("---> onFirstTabStripItemTap", args.eventName);
+}
+
+export function onSecondTabStripItemTap(args: EventData) {
+ console.log("---> onSecondTabStripItemTap", args.eventName);
+}
+
+export function onThirdTabStripItemTap(args: EventData) {
+ console.log("---> onThirdTabStripItemTap", args.eventName);
+}
diff --git a/e2e/ui-tests-app/app/bottom-navigation/events-page.xml b/e2e/ui-tests-app/app/bottom-navigation/events-page.xml
new file mode 100644
index 0000000000..174a28d3f5
--- /dev/null
+++ b/e2e/ui-tests-app/app/bottom-navigation/events-page.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/e2e/ui-tests-app/app/bottom-navigation/first-page.ts b/e2e/ui-tests-app/app/bottom-navigation/first-page.ts
new file mode 100644
index 0000000000..3df754637f
--- /dev/null
+++ b/e2e/ui-tests-app/app/bottom-navigation/first-page.ts
@@ -0,0 +1,14 @@
+import { EventData } from "tns-core-modules/data/observable";
+import { Button } from "tns-core-modules/ui/button/button";
+
+export function goToSecond(args: EventData) {
+ console.log("---> goToSecond Page");
+ const button =