Skip to content

Commit 4a72b01

Browse files
authored
Merge pull request #8319 from woocommerce/tap-stats-chart-ui-test
[UI Tests] - Add view detailed stats chart UI test
2 parents cc0e7bd + b7d3127 commit 4a72b01

File tree

6 files changed

+53
-10
lines changed

6 files changed

+53
-10
lines changed

WooCommerce/Classes/ViewRelated/Dashboard/Stats v4/StoreStatsV4PeriodViewController.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,7 @@ private extension StoreStatsV4PeriodViewController {
354354
comment: "VoiceOver accessibility label for the store revenue chart's Y-axis.")
355355
chartAccessibilityView.isAccessibilityElement = true
356356
chartAccessibilityView.accessibilityTraits = .image
357+
chartAccessibilityView.accessibilityIdentifier = "chart-image"
357358
chartAccessibilityView.accessibilityLabel = NSLocalizedString("Store revenue chart",
358359
comment: "VoiceOver accessibility label for the store revenue chart.")
359360
chartAccessibilityView.accessibilityLabel = String.localizedStringWithFormat(
@@ -690,6 +691,7 @@ private extension StoreStatsV4PeriodViewController {
690691
func updateStatsDataToDefaultStyles() {
691692
revenueData.font = Constants.revenueFont
692693
revenueData.textColor = Constants.statsTextColor
694+
revenueData.accessibilityIdentifier = "revenue-value"
693695
}
694696
}
695697

WooCommerce/UITestsFoundation/Screens/MyStore/MyStoreScreen.swift

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,6 @@ import XCTest
33

44
public final class MyStoreScreen: ScreenObject {
55

6-
// TODO: Remove force `try` once `ScreenObject` migration is completed
7-
public let tabBar = try! TabNavComponent()
8-
// TODO: Remove force `try` once `ScreenObject` migration is completed
9-
public let periodStatsTable = try! PeriodStatsTable()
10-
116
static var isVisible: Bool {
127
(try? MyStoreScreen().isLoaded) ?? false
138
}
@@ -34,14 +29,17 @@ public final class MyStoreScreen: ScreenObject {
3429
return self
3530
}
3631

32+
@discardableResult
3733
public func goToThisWeekTab() -> MyStoreScreen {
3834
return tapTimeframeTab(timeframeId: "period-data-thisWeek-tab")
3935
}
4036

37+
@discardableResult
4138
public func goToThisMonthTab() -> MyStoreScreen {
4239
return tapTimeframeTab(timeframeId: "period-data-thisMonth-tab")
4340
}
4441

42+
@discardableResult
4543
public func goToThisYearTab() -> MyStoreScreen {
4644
return tapTimeframeTab(timeframeId: "period-data-thisYear-tab")
4745
}
@@ -69,4 +67,16 @@ public final class MyStoreScreen: ScreenObject {
6967
public func verifyThisYearStatsLoaded() -> MyStoreScreen {
7068
return verifyStatsForTimeframeLoaded(timeframe: "This Year")
7169
}
70+
71+
public func getRevenueValue() -> String {
72+
return app.staticTexts["revenue-value"].label
73+
}
74+
75+
public func tapChart() {
76+
app.images["chart-image"].tap()
77+
}
78+
79+
public func verifyRevenueUpdated(originalRevenue: String, updatedRevenue: String) {
80+
XCTAssertNotEqual(originalRevenue, updatedRevenue, "Revenue is not updated!")
81+
}
7282
}

WooCommerce/WooCommerceScreenshots/WooCommerceScreenshots.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,12 @@ class WooCommerceScreenshots: XCTestCase {
4343

4444
// My Store
4545
.dismissTopBannerIfNeeded()
46-
.then { ($0 as! MyStoreScreen).periodStatsTable.switchToMonthsTab() }
46+
.then { ($0 as! MyStoreScreen).goToThisMonthTab() }
4747
.thenTakeScreenshot(named: "order-dashboard")
4848

4949
// Orders
50-
.tabBar.goToOrdersScreen()
50+
try TabNavComponent()
51+
.goToOrdersScreen()
5152
.startOrderCreation()
5253
.thenTakeScreenshot(named: "order-creation")
5354
.cancelOrderCreation()

WooCommerce/WooCommerceUITests/Mocks/mappings/jetpack-blogs/wc-analytics/reports_revenue_stats_hour.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@
1919
"jsonBody": {
2020
"data": {
2121
"totals": {
22-
"orders_count": 2,
22+
"orders_count": 80,
2323
"num_items_sold": 0,
2424
"gross_sales": 0,
25-
"total_sales": 23,
25+
"total_sales": 815,
2626
"coupons": 0,
2727
"coupons_count": 0,
2828
"refunds": 0,

WooCommerce/WooCommerceUITests/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ The following flows are covered/planned to be covered by UI tests. Tests that ar
1515
- [ ] Log in with Google
1616
2. My Store
1717
- [x] Stats Today, This Week, This Month, This Year load
18-
- [ ] Tap chart on stats
18+
- [x] View detailed chart stats
1919
3. Orders
2020
- [x] Orders list loads
2121
- [ ] Single Order Screen:

WooCommerce/WooCommerceUITests/Tests/StatsTests.swift

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,34 @@ final class StatsTests: XCTestCase {
2424
.goToThisYearTab()
2525
.verifyThisYearStatsLoaded()
2626
}
27+
28+
func test_view_detailed_chart_stats() throws {
29+
let myStoreScreen = try MyStoreScreen()
30+
31+
var dailyRevenue = try TabNavComponent()
32+
.goToMyStoreScreen()
33+
.getRevenueValue()
34+
35+
myStoreScreen.tapChart()
36+
let hourlyRevenue = myStoreScreen.getRevenueValue()
37+
myStoreScreen.verifyRevenueUpdated(originalRevenue: dailyRevenue, updatedRevenue: hourlyRevenue)
38+
39+
myStoreScreen.goToThisWeekTab()
40+
var weeklyRevenue = try MyStoreScreen().getRevenueValue()
41+
myStoreScreen.tapChart()
42+
dailyRevenue = myStoreScreen.getRevenueValue()
43+
myStoreScreen.verifyRevenueUpdated(originalRevenue: weeklyRevenue, updatedRevenue: dailyRevenue)
44+
45+
myStoreScreen.goToThisMonthTab()
46+
var monthlyRevenue = try MyStoreScreen().getRevenueValue()
47+
myStoreScreen.tapChart()
48+
weeklyRevenue = myStoreScreen.getRevenueValue()
49+
myStoreScreen.verifyRevenueUpdated(originalRevenue: monthlyRevenue, updatedRevenue: weeklyRevenue)
50+
51+
myStoreScreen.goToThisYearTab()
52+
let yearlyRevenue = try MyStoreScreen().getRevenueValue()
53+
myStoreScreen.tapChart()
54+
monthlyRevenue = myStoreScreen.getRevenueValue()
55+
myStoreScreen.verifyRevenueUpdated(originalRevenue: yearlyRevenue, updatedRevenue: monthlyRevenue)
56+
}
2757
}

0 commit comments

Comments
 (0)