diff --git a/e2e/renderer/app/App_Resources/Android/drawable-xxxhdpi/browse.png b/e2e/renderer/app/App_Resources/Android/drawable-xxxhdpi/browse.png new file mode 100644 index 000000000..9a4d6ce88 Binary files /dev/null and b/e2e/renderer/app/App_Resources/Android/drawable-xxxhdpi/browse.png differ diff --git a/e2e/renderer/app/App_Resources/Android/drawable-xxxhdpi/home.png b/e2e/renderer/app/App_Resources/Android/drawable-xxxhdpi/home.png new file mode 100644 index 000000000..372293f0f Binary files /dev/null and b/e2e/renderer/app/App_Resources/Android/drawable-xxxhdpi/home.png differ diff --git a/e2e/renderer/app/App_Resources/iOS/tabIcons/browse.png b/e2e/renderer/app/App_Resources/iOS/tabIcons/browse.png new file mode 100644 index 000000000..cde8ecf30 Binary files /dev/null and b/e2e/renderer/app/App_Resources/iOS/tabIcons/browse.png differ diff --git a/e2e/renderer/app/App_Resources/iOS/tabIcons/browse@2x.png b/e2e/renderer/app/App_Resources/iOS/tabIcons/browse@2x.png new file mode 100644 index 000000000..37e94bd5c Binary files /dev/null and b/e2e/renderer/app/App_Resources/iOS/tabIcons/browse@2x.png differ diff --git a/e2e/renderer/app/App_Resources/iOS/tabIcons/browse@3x.png b/e2e/renderer/app/App_Resources/iOS/tabIcons/browse@3x.png new file mode 100644 index 000000000..5adce0609 Binary files /dev/null and b/e2e/renderer/app/App_Resources/iOS/tabIcons/browse@3x.png differ diff --git a/e2e/renderer/app/App_Resources/iOS/tabIcons/home.png b/e2e/renderer/app/App_Resources/iOS/tabIcons/home.png new file mode 100644 index 000000000..ca969cb8c Binary files /dev/null and b/e2e/renderer/app/App_Resources/iOS/tabIcons/home.png differ diff --git a/e2e/renderer/app/App_Resources/iOS/tabIcons/home@2x.png b/e2e/renderer/app/App_Resources/iOS/tabIcons/home@2x.png new file mode 100644 index 000000000..ace1ca2aa Binary files /dev/null and b/e2e/renderer/app/App_Resources/iOS/tabIcons/home@2x.png differ diff --git a/e2e/renderer/app/App_Resources/iOS/tabIcons/home@3x.png b/e2e/renderer/app/App_Resources/iOS/tabIcons/home@3x.png new file mode 100644 index 000000000..ca2bef9e8 Binary files /dev/null and b/e2e/renderer/app/App_Resources/iOS/tabIcons/home@3x.png differ diff --git a/e2e/renderer/app/app-routing.module.ts b/e2e/renderer/app/app-routing.module.ts index a975d5be8..5cb2f79eb 100644 --- a/e2e/renderer/app/app-routing.module.ts +++ b/e2e/renderer/app/app-routing.module.ts @@ -4,6 +4,8 @@ import { NativeScriptRouterModule } from "nativescript-angular/router"; import { ActionBarDynamicItemsComponent } from "./action-bar/action-bar-dynamic-items.component"; import { ActionBarExtensionComponent } from "./action-bar/action-bar-extension.component"; +import { TabItemBindingComponent } from "./tab-view/tab-item-binding.component"; + import { ListComponent } from "./list.component"; import { NgForComponent } from "./ngfor.component"; import { NgForOfComponent } from "./ngforof.component"; @@ -28,6 +30,10 @@ export const routes = [ path: "action-bar-extension", component: ActionBarExtensionComponent, }, + { + path: "tab-item-binding", + component: TabItemBindingComponent, + }, { path: "list", component: ListComponent, @@ -70,6 +76,8 @@ export const navigatableComponents = [ ActionBarDynamicItemsComponent, ActionBarExtensionComponent, + TabItemBindingComponent, + ListComponent, NgForComponent, NgForOfComponent, diff --git a/e2e/renderer/app/list.component.ts b/e2e/renderer/app/list.component.ts index ddbaa8b95..d7e06f14c 100644 --- a/e2e/renderer/app/list.component.ts +++ b/e2e/renderer/app/list.component.ts @@ -5,6 +5,7 @@ import { Component } from "@angular/core"; + diff --git a/e2e/renderer/app/tab-view/tab-item-binding.component.ts b/e2e/renderer/app/tab-view/tab-item-binding.component.ts new file mode 100644 index 000000000..66cf30f16 --- /dev/null +++ b/e2e/renderer/app/tab-view/tab-item-binding.component.ts @@ -0,0 +1,56 @@ +import { Component } from "@angular/core"; +import { isAndroid } from "platform"; + +function getIconSource(icon: string): string { + const iconPrefix = isAndroid ? "res://" : "res://tabIcons/"; + + return iconPrefix + icon; +} + +const notSelected = { + title: "Not Selected", + textTransform: "lowercase", + iconSource: getIconSource("home") +}; + +const selected = { + title: "Selected", + textTransform: "uppercase", + iconSource: getIconSource("browse") +}; + +@Component({ + template: ` + + + + + + + + + + + + + + ` +}) +export class TabItemBindingComponent { + public items = [ + notSelected, + notSelected, + notSelected + ]; + + onIndexChange(args): void { + const selectedIndex = args.object.selectedIndex; + + for (let i = 0; i < this.items.length; i++) { + this.items[i] = notSelected; + } + + this.items[selectedIndex] = selected; + } +} + diff --git a/e2e/renderer/e2e/resources/images/renderer/Emulator-Api23-Default/tab-view-binding-first-tab.png b/e2e/renderer/e2e/resources/images/renderer/Emulator-Api23-Default/tab-view-binding-first-tab.png new file mode 100644 index 000000000..c4f79265e Binary files /dev/null and b/e2e/renderer/e2e/resources/images/renderer/Emulator-Api23-Default/tab-view-binding-first-tab.png differ diff --git a/e2e/renderer/e2e/resources/images/renderer/Emulator-Api23-Default/tab-view-binding-second-tab.png b/e2e/renderer/e2e/resources/images/renderer/Emulator-Api23-Default/tab-view-binding-second-tab.png new file mode 100644 index 000000000..c95e16540 Binary files /dev/null and b/e2e/renderer/e2e/resources/images/renderer/Emulator-Api23-Default/tab-view-binding-second-tab.png differ diff --git a/e2e/renderer/e2e/resources/images/renderer/Emulator-Api23-Default/tab-view-binding-third-tab.png b/e2e/renderer/e2e/resources/images/renderer/Emulator-Api23-Default/tab-view-binding-third-tab.png new file mode 100644 index 000000000..d1ebe07b0 Binary files /dev/null and b/e2e/renderer/e2e/resources/images/renderer/Emulator-Api23-Default/tab-view-binding-third-tab.png differ diff --git a/e2e/renderer/e2e/resources/images/renderer/Emulator-Api25-Google/tab-view-binding-first-tab.png b/e2e/renderer/e2e/resources/images/renderer/Emulator-Api25-Google/tab-view-binding-first-tab.png new file mode 100644 index 000000000..5905ae969 Binary files /dev/null and b/e2e/renderer/e2e/resources/images/renderer/Emulator-Api25-Google/tab-view-binding-first-tab.png differ diff --git a/e2e/renderer/e2e/resources/images/renderer/Emulator-Api25-Google/tab-view-binding-second-tab.png b/e2e/renderer/e2e/resources/images/renderer/Emulator-Api25-Google/tab-view-binding-second-tab.png new file mode 100644 index 000000000..a88dcf63a Binary files /dev/null and b/e2e/renderer/e2e/resources/images/renderer/Emulator-Api25-Google/tab-view-binding-second-tab.png differ diff --git a/e2e/renderer/e2e/resources/images/renderer/Emulator-Api25-Google/tab-view-binding-third-tab.png b/e2e/renderer/e2e/resources/images/renderer/Emulator-Api25-Google/tab-view-binding-third-tab.png new file mode 100644 index 000000000..060d5dc32 Binary files /dev/null and b/e2e/renderer/e2e/resources/images/renderer/Emulator-Api25-Google/tab-view-binding-third-tab.png differ diff --git a/e2e/renderer/e2e/resources/images/renderer/iPhone 7 100/tab-view-binding-first-tab.png b/e2e/renderer/e2e/resources/images/renderer/iPhone 7 100/tab-view-binding-first-tab.png new file mode 100644 index 000000000..86e41b580 Binary files /dev/null and b/e2e/renderer/e2e/resources/images/renderer/iPhone 7 100/tab-view-binding-first-tab.png differ diff --git a/e2e/renderer/e2e/resources/images/renderer/iPhone 7 100/tab-view-binding-second-tab.png b/e2e/renderer/e2e/resources/images/renderer/iPhone 7 100/tab-view-binding-second-tab.png new file mode 100644 index 000000000..888039781 Binary files /dev/null and b/e2e/renderer/e2e/resources/images/renderer/iPhone 7 100/tab-view-binding-second-tab.png differ diff --git a/e2e/renderer/e2e/resources/images/renderer/iPhone 7 100/tab-view-binding-third-tab.png b/e2e/renderer/e2e/resources/images/renderer/iPhone 7 100/tab-view-binding-third-tab.png new file mode 100644 index 000000000..266dbc621 Binary files /dev/null and b/e2e/renderer/e2e/resources/images/renderer/iPhone 7 100/tab-view-binding-third-tab.png differ diff --git a/e2e/renderer/e2e/resources/images/renderer/iPhone 7 110/tab-view-binding-first-tab.png b/e2e/renderer/e2e/resources/images/renderer/iPhone 7 110/tab-view-binding-first-tab.png new file mode 100644 index 000000000..fb8a587b7 Binary files /dev/null and b/e2e/renderer/e2e/resources/images/renderer/iPhone 7 110/tab-view-binding-first-tab.png differ diff --git a/e2e/renderer/e2e/resources/images/renderer/iPhone 7 110/tab-view-binding-second-tab.png b/e2e/renderer/e2e/resources/images/renderer/iPhone 7 110/tab-view-binding-second-tab.png new file mode 100644 index 000000000..b00d32eda Binary files /dev/null and b/e2e/renderer/e2e/resources/images/renderer/iPhone 7 110/tab-view-binding-second-tab.png differ diff --git a/e2e/renderer/e2e/resources/images/renderer/iPhone 7 110/tab-view-binding-third-tab.png b/e2e/renderer/e2e/resources/images/renderer/iPhone 7 110/tab-view-binding-third-tab.png new file mode 100644 index 000000000..bb19588cc Binary files /dev/null and b/e2e/renderer/e2e/resources/images/renderer/iPhone 7 110/tab-view-binding-third-tab.png differ diff --git a/e2e/renderer/e2e/resources/images/renderer/iPhone X 110/tab-view-binding-first-tab.png b/e2e/renderer/e2e/resources/images/renderer/iPhone X 110/tab-view-binding-first-tab.png new file mode 100644 index 000000000..cf2353d74 Binary files /dev/null and b/e2e/renderer/e2e/resources/images/renderer/iPhone X 110/tab-view-binding-first-tab.png differ diff --git a/e2e/renderer/e2e/resources/images/renderer/iPhone X 110/tab-view-binding-second-tab.png b/e2e/renderer/e2e/resources/images/renderer/iPhone X 110/tab-view-binding-second-tab.png new file mode 100644 index 000000000..c4a909467 Binary files /dev/null and b/e2e/renderer/e2e/resources/images/renderer/iPhone X 110/tab-view-binding-second-tab.png differ diff --git a/e2e/renderer/e2e/resources/images/renderer/iPhone X 110/tab-view-binding-third-tab.png b/e2e/renderer/e2e/resources/images/renderer/iPhone X 110/tab-view-binding-third-tab.png new file mode 100644 index 000000000..469c82750 Binary files /dev/null and b/e2e/renderer/e2e/resources/images/renderer/iPhone X 110/tab-view-binding-third-tab.png differ diff --git a/e2e/renderer/e2e/tab-view.e2e-spec.ts b/e2e/renderer/e2e/tab-view.e2e-spec.ts new file mode 100644 index 000000000..fd9ab15f0 --- /dev/null +++ b/e2e/renderer/e2e/tab-view.e2e-spec.ts @@ -0,0 +1,73 @@ +import { + AppiumDriver, + createDriver, + SearchOptions, + UIElement +} from "nativescript-dev-appium"; +import { assert } from "chai"; + +describe("TabView-scenario", () => { + let driver: AppiumDriver; + + describe("dynamically change TabView item title, icon and textTransform", async () => { + let firstTabItem: UIElement; + let secondTabItem: UIElement; + let thirdTabItem: UIElement; + + before(async () => { + driver = await createDriver(); + await driver.driver.resetApp(); + }); + + it("should navigate to page", async () => { + const navigationButton = + await driver.findElementByText("TabItem Binding", SearchOptions.exact); + await navigationButton.click(); + + await driver.findElementByText("Tab Item Binding", SearchOptions.exact); + }); + + it("should find elements", async () => { + await driver.findElementByText("First Tab"); + + const notSelectedTabItems = await driver.findElementsByText("not selected"); + + firstTabItem = await driver.findElementByText("SELECTED"); + secondTabItem = notSelectedTabItems[0]; + thirdTabItem = notSelectedTabItems[1]; + + const screenMatches = await driver.compareScreen("tab-view-binding-first-tab", 5); + assert(screenMatches); + }); + + it("should navigate to second tab item", async () => { + await secondTabItem.click(); + + await driver.findElementByText("Second Tab"); + + const notSelectedTabItems = await driver.findElementsByText("not selected"); + + firstTabItem = notSelectedTabItems[0]; + secondTabItem = await driver.findElementByText("SELECTED"); + thirdTabItem = notSelectedTabItems[1]; + + const screenMatches = await driver.compareScreen("tab-view-binding-second-tab", 5); + assert(screenMatches); + }); + + it("should navigate to third tab item", async () => { + await thirdTabItem.click(); + + await driver.findElementByText("Third Tab"); + + const notSelectedTabItems = await driver.findElementsByText("not selected"); + + firstTabItem = notSelectedTabItems[0]; + secondTabItem = notSelectedTabItems[1]; + thirdTabItem = await driver.findElementByText("SELECTED"); + + const screenMatches = await driver.compareScreen("tab-view-binding-third-tab", 5); + assert(screenMatches); + }); + }); +});