Skip to content

Commit 2cfbfaa

Browse files
authored
test: replace orders tab with chat and route orders via more (#223)
1 parent fae5a37 commit 2cfbfaa

14 files changed

+88
-35
lines changed

app/test/pageobjects/base/footer.page.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ class FooterPage extends BasePage {
99
return $(selectors.byAccessibilityId('nav-tab-spotlight'));
1010
}
1111

12-
get ordersTab() {
13-
return $(selectors.byAccessibilityId('nav-tab-orders'));
12+
get chatTab() {
13+
return $(selectors.byAccessibilityId('nav-tab-chat'));
1414
}
1515

1616
get subscriptionsTab() {
@@ -25,8 +25,8 @@ class FooterPage extends BasePage {
2525
await this.click(this.spotlightsTab);
2626
}
2727

28-
async clickOrdersTab() {
29-
await this.click(this.ordersTab);
28+
async clickChatTab() {
29+
await this.click(this.chatTab);
3030
}
3131

3232
async clickSubscriptionsTab() {

app/test/pageobjects/more.page.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,15 @@ class MorePage extends BasePage {
4444
);
4545
}
4646

47+
get ordersMenuItem() {
48+
return $(
49+
getSelector({
50+
ios: '~nav-menu-orders',
51+
android: '//*[@resource-id="nav-menu-orders"]',
52+
}),
53+
);
54+
}
55+
4756
get creditMemosMenuItem() {
4857
return $(
4958
getSelector({
@@ -163,6 +172,15 @@ class MorePage extends BasePage {
163172
await browser.pause(PAUSE.NAVIGATION);
164173
}
165174

175+
/**
176+
* Navigate to Orders page
177+
*/
178+
async navigateToOrders() {
179+
await this.ensureMorePage();
180+
await this.ordersMenuItem.click();
181+
await browser.pause(PAUSE.NAVIGATION);
182+
}
183+
166184
/**
167185
* Navigate to Credit Memos page
168186
*/

app/test/pageobjects/orders.page.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
const { selectors } = require('./utils/selectors');
22
const { PAUSE, RETRY } = require('./utils/constants');
3+
const morePage = require('./more.page');
34

45
const ListPage = require('./base/list.page');
56

@@ -119,7 +120,7 @@ class OrdersPage extends ListPage {
119120

120121
/**
121122
* Ensures the app is on the Orders page, navigating there if needed
122-
* Uses the footer navigation to get to Orders from any page with visible footer
123+
* Uses More -> Orders navigation to get to Orders from any page with visible footer
123124
*/
124125
async ensureOrdersPage() {
125126
// Check if already on Orders page
@@ -130,7 +131,7 @@ class OrdersPage extends ListPage {
130131

131132
// Try to navigate back until footer is visible
132133
for (let i = 0; i < RETRY.MAX_BACK_ATTEMPTS; i++) {
133-
const isFooterVisible = await this.footer.ordersTab.isDisplayed().catch(() => false);
134+
const isFooterVisible = await this.footer.chatTab.isDisplayed().catch(() => false);
134135
if (isFooterVisible) {
135136
break;
136137
}
@@ -140,8 +141,8 @@ class OrdersPage extends ListPage {
140141
await browser.pause(PAUSE.NAVIGATION);
141142
}
142143

143-
// Click Orders tab from footer
144-
await this.footer.clickOrdersTab();
144+
// Navigate through More menu to Orders
145+
await morePage.navigateToOrders();
145146
await this.waitForScreenReady();
146147
}
147148

app/test/pageobjects/spotlights.page.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,8 @@ class SpotlightsPage extends BasePage {
100100
return $(selectors.byContentDesc('nav-tab-spotlight'));
101101
}
102102

103-
get navTabOrders() {
104-
return $(selectors.byContentDesc('nav-tab-orders'));
103+
get navTabChat() {
104+
return $(selectors.byContentDesc('nav-tab-chat'));
105105
}
106106

107107
get navTabSubscriptions() {
@@ -728,12 +728,12 @@ class SpotlightsPage extends BasePage {
728728
// ========== Navigation Methods ==========
729729
/**
730730
* Navigate to a tab
731-
* @param {string} tabName - 'spotlight', 'orders', 'subscriptions', 'more'
731+
* @param {string} tabName - 'spotlight', 'chat', 'subscriptions', 'more'
732732
*/
733733
async navigateToTab(tabName) {
734734
const tabMap = {
735735
spotlight: this.navTabSpotlight,
736-
orders: this.navTabOrders,
736+
chat: this.navTabChat,
737737
subscriptions: this.navTabSubscriptions,
738738
more: this.navTabMore,
739739
};

app/test/specs/agreements.e2e.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ describe('Agreements Page', () => {
9595

9696
it('should display all footer navigation tabs', async () => {
9797
await expect(agreementsPage.footer.spotlightsTab).toBeDisplayed();
98-
await expect(agreementsPage.footer.ordersTab).toBeDisplayed();
98+
await expect(agreementsPage.footer.chatTab).toBeDisplayed();
9999
await expect(agreementsPage.footer.subscriptionsTab).toBeDisplayed();
100100
await expect(agreementsPage.footer.moreTab).toBeDisplayed();
101101
});

app/test/specs/buyers.e2e.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ describe('Buyers Page', () => {
113113

114114
it('should display all footer navigation tabs', async () => {
115115
await expect(buyersPage.footer.spotlightsTab).toBeDisplayed();
116-
await expect(buyersPage.footer.ordersTab).toBeDisplayed();
116+
await expect(buyersPage.footer.chatTab).toBeDisplayed();
117117
await expect(buyersPage.footer.subscriptionsTab).toBeDisplayed();
118118
await expect(buyersPage.footer.moreTab).toBeDisplayed();
119119
});

app/test/specs/enrollments.e2e.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ describe('Enrollments Page', () => {
113113

114114
it('should display all footer navigation tabs', async () => {
115115
await expect(enrollmentsPage.footer.spotlightsTab).toBeDisplayed();
116-
await expect(enrollmentsPage.footer.ordersTab).toBeDisplayed();
116+
await expect(enrollmentsPage.footer.chatTab).toBeDisplayed();
117117
await expect(enrollmentsPage.footer.subscriptionsTab).toBeDisplayed();
118118
await expect(enrollmentsPage.footer.moreTab).toBeDisplayed();
119119
});

app/test/specs/licensees.e2e.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ describe('Licensees Page', () => {
113113

114114
it('should display all footer navigation tabs', async () => {
115115
await expect(licenseesPage.footer.spotlightsTab).toBeDisplayed();
116-
await expect(licenseesPage.footer.ordersTab).toBeDisplayed();
116+
await expect(licenseesPage.footer.chatTab).toBeDisplayed();
117117
await expect(licenseesPage.footer.subscriptionsTab).toBeDisplayed();
118118
await expect(licenseesPage.footer.moreTab).toBeDisplayed();
119119
});

app/test/specs/navigation.e2e.js

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,21 @@ describe('Navigation via footer', () => {
2222
await navigation.ensureHomePage({ resetFilters: false });
2323
});
2424

25-
it('click on Orders button to load Orders page', async () => {
26-
await expect(homePage.footer.ordersTab).toBeDisplayed();
27-
await homePage.footer.clickOrdersTab();
25+
it('click on Chat button to load Chat page', async () => {
26+
await expect(homePage.footer.chatTab).toBeDisplayed();
27+
await homePage.footer.clickChatTab();
28+
const chatHeader = await $('//*[@name="Chat" or @text="Chat"]');
29+
await expect(chatHeader).toBeDisplayed();
30+
await expect(homePage.footer.chatTab).toBeDisplayed();
31+
});
32+
33+
it('click on Orders in More to load Orders page', async () => {
34+
await expect(homePage.footer.moreTab).toBeDisplayed();
35+
await homePage.footer.clickMoreTab();
36+
await expect(morePage.ordersMenuItem).toBeDisplayed();
37+
await morePage.navigateToOrders();
2838
await ordersPage.waitForScreenReady();
29-
// Verify we navigated by checking the Orders tab is still accessible (we're on orders screen)
30-
await expect(ordersPage.footer.ordersTab).toBeDisplayed();
39+
await expect(ordersPage.headerTitle).toBeDisplayed();
3140
});
3241

3342
it('click on Subscriptions button to load Subscriptions page', async () => {
@@ -84,7 +93,8 @@ describe('Navigation via footer', () => {
8493

8594
it('navigate from Orders page to Profile via account button', async () => {
8695
// Navigate to Orders page first
87-
await homePage.footer.clickOrdersTab();
96+
await homePage.footer.clickMoreTab();
97+
await morePage.navigateToOrders();
8898
await ordersPage.waitForScreenReady();
8999

90100
// Tap account button from Orders page

app/test/specs/order-details-navigation.e2e.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -112,12 +112,12 @@ describe('Order Details Navigation', () => {
112112
await orderDetailsPage.waitForPageReady();
113113

114114
await expect(orderDetailsPage.footer.spotlightsTab).toBeDisplayed();
115-
await expect(orderDetailsPage.footer.ordersTab).toBeDisplayed();
115+
await expect(orderDetailsPage.footer.chatTab).toBeDisplayed();
116116
await expect(orderDetailsPage.footer.subscriptionsTab).toBeDisplayed();
117117
await expect(orderDetailsPage.footer.moreTab).toBeDisplayed();
118118
});
119119

120-
it('should have Orders tab selected on details page', async function () {
120+
it('should have More tab selected on details page', async function () {
121121
if (!hasOrdersData) {
122122
this.skip();
123123
return;
@@ -126,12 +126,12 @@ describe('Order Details Navigation', () => {
126126
await ordersPage.tapFirstOrder();
127127
await orderDetailsPage.waitForPageReady();
128128

129-
const ordersTab = orderDetailsPage.footer.ordersTab;
129+
const moreTab = orderDetailsPage.footer.moreTab;
130130
if (isAndroid()) {
131-
const selected = await ordersTab.getAttribute('selected');
131+
const selected = await moreTab.getAttribute('selected');
132132
expect(selected).toBe('true');
133133
} else {
134-
const value = await ordersTab.getAttribute('value');
134+
const value = await moreTab.getAttribute('value');
135135
expect(value).toBe('1');
136136
}
137137
});

0 commit comments

Comments
 (0)