1
+ import { AppiumDriver } from "nativescript-dev-appium" ;
2
+ import { assert } from "chai" ;
3
+
4
+ const home = "Home"
5
+ const first = "First"
6
+ const modal = "Modal" ;
7
+ const modalFirst = "Modal First" ;
8
+ const dialogConfirm = "Dialog" ;
9
+ const modalSecond = "Modal Second" ;
10
+ const modalNested = "Modal Nested" ;
11
+
12
+ const modalFrame = "Show Modal Page With Frame" ;
13
+ const modalNoFrame = "Show Modal Without Frame" ;
14
+ const modalLayout = "Show Modal Layout" ;
15
+ const modalTabView = "Show Modal TabView" ;
16
+ const navToSecondPage = "Navigate To Second Page" ;
17
+ const showDialog = "Show Dialog" ;
18
+ const resetFrameRootView = "Reset Frame Root View" ;
19
+ const resetTabRootView = "Reset Tab Root View" ;
20
+ const resetLayoutRootView = "Reset Layout Root View" ;
21
+
22
+ const showNestedModalFrame = "Show Nested Modal Page With Frame" ;
23
+ const showNestedModalPage = "Show Nested Modal Page" ;
24
+
25
+ const confirmDialog = "Yes" ;
26
+ const confirmDialogMessage = "Message" ;
27
+ const closeModalNested = "Close Modal Nested" ;
28
+ const closeModal = "Close Modal" ;
29
+ const goBack = "Go Back" ;
30
+
31
+ export class Screen {
32
+
33
+ private _driver : AppiumDriver
34
+
35
+ constructor ( driver : AppiumDriver ) {
36
+ this . _driver = driver ;
37
+ }
38
+
39
+ loadedHome = async ( ) => {
40
+ const lblHome = await this . _driver . findElementByText ( home ) ;
41
+ assert . isTrue ( await lblHome . isDisplayed ( ) ) ;
42
+ console . log ( home + " loaded!" ) ;
43
+ }
44
+
45
+ resetFrameRootView = async ( ) => {
46
+ console . log ( "Setting frame root ..." ) ;
47
+ const btnResetFrameRootView = await this . _driver . findElementByText ( resetFrameRootView ) ;
48
+ await btnResetFrameRootView . tap ( ) ;
49
+ }
50
+
51
+ resetLayoutRootView = async ( ) => {
52
+ console . log ( "Setting layout root ..." ) ;
53
+ const btnResetLayoutRootView = await this . _driver . findElementByText ( resetLayoutRootView ) ;
54
+ await btnResetLayoutRootView . tap ( ) ;
55
+ }
56
+
57
+ resetTabRootView = async ( ) => {
58
+ const btnResetTabRootView = await this . _driver . findElementByText ( resetTabRootView ) ;
59
+ await btnResetTabRootView . tap ( ) ;
60
+ }
61
+
62
+ loadedTabRootView = async ( ) => {
63
+ const tabFirst = await this . _driver . findElementByText ( first ) ;
64
+ assert . isTrue ( await tabFirst . isDisplayed ( ) ) ;
65
+ console . log ( "Tab root view loaded!" ) ;
66
+ }
67
+
68
+ setFrameRootView = async ( ) => {
69
+ // should load frame root, no need to verify it is loaded
70
+ await this . loadedHome ( ) ;
71
+ await this . resetFrameRootView ( ) ;
72
+ }
73
+
74
+ setTabRootView = async ( ) => {
75
+ // should load tab root
76
+ await this . loadedHome ( ) ;
77
+ try {
78
+ await this . loadedTabRootView ( ) ;
79
+ } catch ( err ) {
80
+ await this . resetTabRootView ( ) ;
81
+ await this . loadedTabRootView ( ) ;
82
+ }
83
+ }
84
+
85
+ setLayoutRootView = async ( ) => {
86
+ // should load layout root, no need to verify it is loaded
87
+ await this . loadedHome ( ) ;
88
+ await this . resetLayoutRootView ( ) ;
89
+ }
90
+
91
+ showModalFrame = async ( ) => {
92
+ const btnModalFrame = await this . _driver . findElementByText ( modalFrame ) ;
93
+ await btnModalFrame . tap ( ) ;
94
+ }
95
+
96
+ loadedModalFrame = async ( ) => {
97
+ const lblModal = await this . _driver . findElementByText ( modal ) ;
98
+ assert . isTrue ( await lblModal . isDisplayed ( ) ) ;
99
+ console . log ( modal + " loaded!" ) ;
100
+ }
101
+
102
+ showModalNoFrame = async ( ) => {
103
+ const btnModalPage = await this . _driver . findElementByText ( modalNoFrame ) ;
104
+ await btnModalPage . tap ( ) ;
105
+ }
106
+
107
+ loadedModalPage = async ( ) => {
108
+ const btnShowNestedModalPage = await this . _driver . findElementByText ( showNestedModalPage ) ;
109
+ assert . isTrue ( await btnShowNestedModalPage . isDisplayed ( ) ) ;
110
+ console . log ( "Modal Page loaded!" ) ;
111
+ }
112
+
113
+ showModalLayout = async ( ) => {
114
+ const btnModalLayout = await this . _driver . findElementByText ( modalLayout ) ;
115
+ await btnModalLayout . tap ( ) ;
116
+ }
117
+
118
+ loadedModalLayout = async ( ) => {
119
+ await this . loadedModalFrame ( ) ;
120
+ }
121
+
122
+ showModalTabView = async ( ) => {
123
+ const btnModalTabView = await this . _driver . findElementByText ( modalTabView ) ;
124
+ await btnModalTabView . tap ( ) ;
125
+ }
126
+
127
+ loadedModalTabView = async ( ) => {
128
+ const itemModalFirst = await this . _driver . findElementByText ( modalFirst ) ;
129
+ assert . isTrue ( await itemModalFirst . isDisplayed ( ) ) ;
130
+ console . log ( "Modal TabView loaded!" ) ;
131
+ }
132
+
133
+ navigateToSecondPage = async ( ) => {
134
+ const btnNavToSecondPage = await this . _driver . findElementByText ( navToSecondPage ) ;
135
+ await btnNavToSecondPage . tap ( ) ;
136
+ }
137
+
138
+ showDialogConfirm = async ( ) => {
139
+ const btnShowDialogConfirm = await this . _driver . findElementByText ( showDialog ) ;
140
+ await btnShowDialogConfirm . tap ( ) ;
141
+ }
142
+
143
+ navigateToFirstItem = async ( ) => {
144
+ const itemModalFirst = await this . _driver . findElementByText ( modalFirst ) ;
145
+ await itemModalFirst . tap ( ) ;
146
+ }
147
+
148
+ navigateToSecondItem = async ( ) => {
149
+ const itemModalSecond = await this . _driver . findElementByText ( modalSecond ) ;
150
+ await itemModalSecond . tap ( ) ;
151
+ }
152
+
153
+ loadedModalNoFrame = async ( ) => {
154
+ const btnShowDialogConfirm = await this . _driver . findElementByText ( showDialog ) ;
155
+ const btnCloseModal = await this . _driver . findElementByText ( closeModal ) ;
156
+ assert . isTrue ( await btnShowDialogConfirm . isDisplayed ( ) ) ;
157
+ assert . isTrue ( await btnCloseModal . isDisplayed ( ) ) ;
158
+ console . log ( "Modal Without Frame shown!" ) ;
159
+ }
160
+
161
+ loadedConfirmDialog = async ( ) => {
162
+ const lblDialogMessage = await this . _driver . findElementByText ( confirmDialogMessage ) ;
163
+ assert . isTrue ( await lblDialogMessage . isDisplayed ( ) ) ;
164
+ console . log ( dialogConfirm + " shown!" ) ;
165
+ }
166
+
167
+ loadedSecondPage = async ( ) => {
168
+ const lblModalSecond = await this . _driver . findElementByText ( modalSecond ) ;
169
+ assert . isTrue ( await lblModalSecond . isDisplayed ( ) ) ;
170
+ console . log ( modalSecond + " loaded!" ) ;
171
+ }
172
+
173
+ loadedFirstItem = async ( ) => {
174
+ const lblModal = await this . _driver . findElementByText ( modal ) ;
175
+ assert . isTrue ( await lblModal . isDisplayed ( ) ) ;
176
+ console . log ( "First Item loaded!" ) ;
177
+ }
178
+
179
+ loadedSecondItem = async ( ) => {
180
+ const btnGoBack = await this . _driver . findElementByText ( goBack ) ;
181
+ assert . isTrue ( await btnGoBack . isDisplayed ( ) ) ;
182
+ console . log ( "Second Item loaded!" ) ;
183
+ }
184
+
185
+ closeDialog = async ( ) => {
186
+ const btnYesDialog = await this . _driver . findElementByText ( confirmDialog ) ;
187
+ await btnYesDialog . tap ( ) ;
188
+ }
189
+
190
+ goBackFromSecondPage = async ( ) => {
191
+ const btnGoBackFromSecondPage = await this . _driver . findElementByText ( goBack ) ;
192
+ await btnGoBackFromSecondPage . tap ( ) ;
193
+ }
194
+
195
+ showNestedModalFrame = async ( ) => {
196
+ const btnShowNestedModalFrame = await this . _driver . findElementByText ( showNestedModalFrame ) ;
197
+ await btnShowNestedModalFrame . tap ( ) ;
198
+ }
199
+
200
+ loadedNestedModalFrame = async ( ) => {
201
+ const lblModalNested = await this . _driver . findElementByText ( modalNested ) ;
202
+ assert . isTrue ( await lblModalNested . isDisplayed ( ) ) ;
203
+ console . log ( modalNested + " loaded!" ) ;
204
+ }
205
+
206
+ closeModalNested = async ( ) => {
207
+ const btnCloseNestedModal = await this . _driver . findElementByText ( closeModalNested ) ;
208
+ await btnCloseNestedModal . tap ( ) ;
209
+ }
210
+
211
+ showNestedModalPage = async ( ) => {
212
+ const btnShowNestedModalPage = await this . _driver . findElementByText ( showNestedModalPage ) ;
213
+ await btnShowNestedModalPage . tap ( ) ;
214
+ }
215
+
216
+ loadedNestedModalPage = async ( ) => {
217
+ const btnCloseModalNested = await this . _driver . findElementByText ( closeModalNested ) ;
218
+ assert . isTrue ( await btnCloseModalNested . isDisplayed ( ) ) ;
219
+ console . log ( closeModalNested + " loaded!" ) ;
220
+ }
221
+
222
+ closeModal = async ( ) => {
223
+ const btnCloseModal = await this . _driver . findElementByText ( closeModal ) ;
224
+ await btnCloseModal . tap ( ) ;
225
+ }
226
+
227
+ loadModalNoFrame = async ( ) => {
228
+ try {
229
+ await this . loadedModalNoFrame ( ) ;
230
+ } catch ( err ) {
231
+ // should show modal with no frame
232
+ await this . showModalNoFrame ( ) ;
233
+ await this . loadedModalNoFrame ( ) ;
234
+ }
235
+ }
236
+
237
+ loadModalFrame = async ( ) => {
238
+ try {
239
+ await this . loadedModalFrame ( ) ;
240
+ } catch ( err ) {
241
+ // should show modal page with frame
242
+ await this . showModalFrame ( ) ;
243
+ await this . loadedModalFrame ( ) ;
244
+ }
245
+ }
246
+ }
0 commit comments