-
Notifications
You must be signed in to change notification settings - Fork 133
/
ScreenshotTest.kt
118 lines (102 loc) · 4.16 KB
/
ScreenshotTest.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
package com.woocommerce.android.screenshots
import androidx.compose.ui.test.junit4.createComposeRule
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.rule.ActivityTestRule
import com.woocommerce.android.BuildConfig
import com.woocommerce.android.helpers.InitializationRule
import com.woocommerce.android.helpers.TestBase
import com.woocommerce.android.screenshots.login.WelcomeScreen
import com.woocommerce.android.screenshots.moremenu.MoreMenuScreen
import com.woocommerce.android.screenshots.mystore.MyStoreScreen
import com.woocommerce.android.screenshots.orders.OrderListScreen
import com.woocommerce.android.screenshots.orders.OrderSearchScreen
import com.woocommerce.android.screenshots.orders.SingleOrderScreen
import com.woocommerce.android.screenshots.products.ProductListScreen
import com.woocommerce.android.screenshots.products.SingleProductScreen
import com.woocommerce.android.screenshots.reviews.ReviewsListScreen
import com.woocommerce.android.screenshots.reviews.SingleReviewScreen
import com.woocommerce.android.ui.main.MainActivity
import dagger.hilt.android.testing.HiltAndroidRule
import dagger.hilt.android.testing.HiltAndroidTest
import org.junit.After
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import tools.fastlane.screengrab.Screengrab
import tools.fastlane.screengrab.UiAutomatorScreenshotStrategy
import tools.fastlane.screengrab.cleanstatusbar.CleanStatusBar
import tools.fastlane.screengrab.locale.LocaleTestRule
@HiltAndroidTest
class ScreenshotTest : TestBase() {
@get:Rule(order = 0)
val rule = HiltAndroidRule(this)
@get:Rule(order = 1)
val initRule = InitializationRule()
@get:Rule(order = 2)
val composeTestRule = createComposeRule()
@get:Rule(order = 3)
val localeTestRule = LocaleTestRule()
@get:Rule(order = 4)
var activityRule = ActivityTestRule(MainActivity::class.java)
@Before
fun setUp() {
CleanStatusBar.enableWithDefaults()
}
@After
fun tearDown() {
CleanStatusBar.disable()
}
@Test
fun screenshots() {
val testedTheme: String? = InstrumentationRegistry.getArguments().getString("theme")
Screengrab.setDefaultScreenshotStrategy(UiAutomatorScreenshotStrategy())
WelcomeScreen
.logoutIfNeeded(composeTestRule)
.selectLogin()
.proceedWith(BuildConfig.SCREENSHOTS_URL)
.proceedWith(BuildConfig.SCREENSHOTS_USERNAME)
.proceedWith(BuildConfig.SCREENSHOTS_PASSWORD)
if (testedTheme == "light" || testedTheme == "dark") {
TabNavComponent()
.gotoMoreMenuScreen()
.openSettings(composeTestRule)
.setTheme(testedTheme)
.goBackToMoreMenuScreen()
TabNavComponent().gotoMyStoreScreen()
}
// My Store
MyStoreScreen()
.stats.switchToStatsDashboardWeekTab()
.thenTakeScreenshot<MyStoreScreen>("order-dashboard")
// Orders
TabNavComponent()
.gotoOrdersScreen()
.thenTakeScreenshot<OrderListScreen>("order-list")
.selectOrder(7)
.thenTakeScreenshot<SingleOrderScreen>("order-detail")
.goBackToOrdersScreen()
.openSearchPane()
.thenTakeScreenshot<OrderSearchScreen>("order-search")
.cancel()
// More Menu
TabNavComponent()
.gotoMoreMenuScreen()
.thenTakeScreenshot<MoreMenuScreen>("more-menu")
// Reviews
TabNavComponent()
.gotoMoreMenuScreen()
.openReviewsListScreen(composeTestRule)
.thenTakeScreenshot<ReviewsListScreen>("review-list")
.selectReviewByIndex(4)
.thenTakeScreenshot<SingleReviewScreen>("review-details")
.goBackToReviewsScreen()
.goBackToMoreMenuScreen()
// Products
TabNavComponent()
.gotoProductsScreen()
.thenTakeScreenshot<ProductListScreen>("product-list")
.selectProductByName("Akoya Pearl shades")
.thenTakeScreenshot<SingleProductScreen>("product-details")
.goBackToProductsScreen()
}
}