-
Notifications
You must be signed in to change notification settings - Fork 1.7k
/
Bugzilla43663.cs
149 lines (131 loc) · 3.48 KB
/
Bugzilla43663.cs
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
using Xamarin.Forms.CustomAttributes;
using Xamarin.Forms.Internals;
using System;
using System.Runtime.CompilerServices;
#if UITEST
using Xamarin.UITest;
using NUnit.Framework;
using Xamarin.Forms.Core.UITests;
#endif
namespace Xamarin.Forms.Controls.Issues
{
[Preserve(AllMembers = true)]
[Issue(IssueTracker.Bugzilla, 43663, "ModalPushed and ModalPopped not working on WinRT", PlatformAffected.WinRT)]
#if UITEST
[NUnit.Framework.Category(UITestCategories.Navigation)]
[NUnit.Framework.Category(Core.UITests.UITestCategories.Bugzilla)]
#endif
public class Bugzilla43663 : TestNavigationPage
{
const string Message = "Message";
const string GoBack = "Go back";
const string Cancel = "Cancel";
const string PushModal = "Push Modal";
const string PopModal = "Pop Modal";
const string Modal = "Modal";
protected override void Init()
{
Application.Current.ModalPushed += ModalPushed;
Application.Current.ModalPopped += ModalPopped;
var initialPage = new ContentPage();
var insertedPage = new ContentPage
{
Content = new StackLayout
{
Children =
{
new Label
{
Text = "This page's appearing unsubscribes from the ModalPushed/ModalPopped events",
HorizontalTextAlignment = TextAlignment.Center
},
new Button
{
Text = GoBack,
Command = new Command(async () => await Navigation.PopModalAsync())
}
}
}
};
insertedPage.Appearing += (s, e) =>
{
Application.Current.ModalPushed -= ModalPushed;
Application.Current.ModalPopped -= ModalPopped;
};
var modalPage = new ContentPage();
modalPage.Content = new StackLayout
{
Children =
{
new Label { Text = Modal },
new Label
{
Text = "Now press the button bellow, and verify if you go back to previous page. If back's you've success!",
HorizontalTextAlignment= TextAlignment.Center
},
new Button
{
Text = "Click to dismiss modal",
Command = new Command(async() =>
{
await Navigation.PopModalAsync();
}),
AutomationId = PopModal
}
},
};
initialPage.Content = new StackLayout
{
VerticalOptions = LayoutOptions.Center,
Children =
{
new Label
{
Text = "Verify if after you press the \"Click to push Modal\" button, you navigate to Modal Page.",
HorizontalTextAlignment = TextAlignment.Center
},
new Button
{
Text = "Click to push Modal",
Command = new Command(async () => await Navigation.PushModalAsync(modalPage)),
AutomationId = PushModal
},
new Button
{
Text = GoBack,
Command = new Command(async () => await Navigation.PopAsync())
}
}
};
PushAsync(initialPage);
Navigation.InsertPageBefore(insertedPage, initialPage);
}
void ModalPushed(object sender, ModalPushedEventArgs e)
{
DisplayAlert("Pushed", Message, Cancel);
}
void ModalPopped(object sender, ModalPoppedEventArgs e)
{
DisplayAlert("Popped", Message, Cancel);
}
#if UITEST && __WINDOWS__
[Test]
public void ModalNavigation()
{
DismissAlert();
RunningApp.WaitForElement(q => q.Marked(PushModal));
RunningApp.Tap(q => q.Marked(PushModal));
DismissAlert();
RunningApp.WaitForElement(q => q.Marked(Modal));
RunningApp.Tap(q => q.Marked(PopModal));
DismissAlert();
RunningApp.WaitForElement(q => q.Marked(PushModal));
}
void DismissAlert()
{
RunningApp.WaitForElement(Message);
RunningApp.Tap(Cancel);
}
#endif
}
}