Skip to content

Commit 90e50ec

Browse files
authored
Menuflyout Item mouse/touch invocation sizing regression test (#4747)
1 parent 219385d commit 90e50ec

File tree

3 files changed

+150
-57
lines changed

3 files changed

+150
-57
lines changed

dev/CommonStyles/InteractionTests/CommonStylesTests.cs

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
using Microsoft.Windows.Apps.Test.Foundation.Controls;
2020
using Microsoft.Windows.Apps.Test.Foundation.Patterns;
2121
using Microsoft.Windows.Apps.Test.Foundation.Waiters;
22+
using System;
2223

2324
namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
2425
{
@@ -168,5 +169,55 @@ public void InkToolbarTest()
168169
Wait.ForIdle();
169170
}
170171
}
172+
173+
[TestMethod]
174+
public void MenuFlyoutItemSizeTest()
175+
{
176+
if (PlatformConfiguration.IsOSVersionLessThan(OSVersion.Redstone5))
177+
{
178+
Log.Warning("This test relies on touch input, the injection of which is only supported in RS5 and up. Test is disabled.");
179+
return;
180+
}
181+
182+
using (var setup = new TestSetupHelper("MenuFlyout Tests"))
183+
{
184+
Log.Comment("Mouse click on Button to verify MenuFlyoutItem size.");
185+
186+
var testMenuFlyoutButton = FindElement.ByName("TestMenuFlyoutButton");
187+
Verify.IsNotNull(testMenuFlyoutButton, "Verifying that we found a UIElement called TestMenuFlyoutButton");
188+
189+
InputHelper.LeftClick(testMenuFlyoutButton);
190+
Wait.ForIdle();
191+
192+
var testMenuFlyoutItem = FindElement.ByName("TestMenuFlyoutItem");
193+
Verify.IsNotNull(testMenuFlyoutItem, "Verifying that we found a UIElement called TestMenuFlyoutItem");
194+
195+
InputHelper.LeftClick(testMenuFlyoutItem);
196+
Wait.ForIdle();
197+
198+
var testMenuFlyoutItemHeightTextBlock = FindElement.ByName<TextBlock>("TestMenuFlyoutItemHeightTextBlock");
199+
var testMenuFlyoutItemWidthTextBlock = FindElement.ByName<TextBlock>("TestMenuFlyoutItemWidthTextBlock");
200+
201+
Verify.IsNotNull(testMenuFlyoutItemHeightTextBlock, "Verifying that we found a UIElement called TestMenuFlyoutItemHeightTextBlock");
202+
Verify.IsNotNull(testMenuFlyoutItemWidthTextBlock, "Verifying that we found a UIElement called TestMenuFlyoutItemWidthTextBlock");
203+
204+
var width = Convert.ToDouble(testMenuFlyoutItemWidthTextBlock.GetText());
205+
206+
Verify.AreEqual("32", testMenuFlyoutItemHeightTextBlock.GetText(), "Comparing height of MenuFlyoutItem after Flyout was opened with mouse");
207+
Verify.IsGreaterThan(width, 0.0, "Comparing height of MenuFlyoutItem after Flyout was opened with mouse");
208+
Verify.IsLessThan(width, 200.0, "Comparing height of MenuFlyoutItem after Flyout was opened with mouse");
209+
210+
InputHelper.LeftClick(testMenuFlyoutItemHeightTextBlock);
211+
Wait.ForIdle();
212+
InputHelper.Tap(testMenuFlyoutButton);
213+
Wait.ForIdle();
214+
InputHelper.Tap(testMenuFlyoutItem);
215+
Wait.ForIdle();
216+
217+
width = Convert.ToDouble(testMenuFlyoutItemWidthTextBlock.GetText());
218+
Verify.AreEqual("40", testMenuFlyoutItemHeightTextBlock.GetText(), "Comparing height of MenuFlyoutItem after Flyout was opened with touch");
219+
Verify.IsGreaterThan(width, 200.0, "Comparing width of MenuFlyoutItem after Flyout was opened with touch");
220+
}
221+
}
171222
}
172223
}

dev/CommonStyles/TestUI/MenuFlyoutPage.xaml

100644100755
Lines changed: 93 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -10,36 +10,55 @@
1010
mc:Ignorable="d">
1111

1212
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" Margin="12">
13-
<StackPanel>
14-
<Button Content="MenuFlyout" VerticalAlignment="Top">
15-
<Button.Flyout>
16-
<MenuFlyout>
17-
<MenuFlyoutItem Text="MenuFlyoutItem"/>
18-
<MenuFlyoutSubItem Text="MenuFlyoutSubItem">
19-
<MenuFlyoutItem Text="MenuFlyoutItem" />
20-
<ToggleMenuFlyoutItem Text="ToggleMenuFlyoutItem" />
13+
<Grid.ColumnDefinitions>
14+
<ColumnDefinition Width="Auto"/>
15+
<ColumnDefinition Width="Auto"/>
16+
</Grid.ColumnDefinitions>
17+
<Grid.RowDefinitions>
18+
<RowDefinition Height="Auto"/>
19+
</Grid.RowDefinitions>
20+
21+
<StackPanel Grid.RowSpan="2">
22+
<Button Content="Short Text MenuFlyout" x:Name="TestMenuFlyoutButton" AutomationProperties.Name="TestMenuFlyoutButton" Margin="0,0,0,12">
23+
<Button.Flyout>
24+
<MenuFlyout>
25+
<MenuFlyoutItem Text="Reset" x:Name="TestMenuFlyoutItem" AutomationProperties.Name="TestMenuFlyoutItem" Click="TestMenuFlyoutItemClick"/>
26+
<MenuFlyoutSeparator />
27+
<MenuFlyoutItem Text="Repeat" />
28+
<MenuFlyoutItem Text="Shuffle" />
29+
</MenuFlyout>
30+
</Button.Flyout>
31+
</Button>
32+
33+
<Button Content="MenuFlyout">
34+
<Button.Flyout>
35+
<MenuFlyout>
36+
<MenuFlyoutItem Text="MenuFlyoutItem"/>
2137
<MenuFlyoutSubItem Text="MenuFlyoutSubItem">
2238
<MenuFlyoutItem Text="MenuFlyoutItem" />
23-
<MenuFlyoutSeparator/>
24-
<MenuFlyoutItem Text="MenuFlyoutItem" />
39+
<ToggleMenuFlyoutItem Text="ToggleMenuFlyoutItem" />
40+
<MenuFlyoutSubItem Text="MenuFlyoutSubItem">
41+
<MenuFlyoutItem Text="MenuFlyoutItem" />
42+
<MenuFlyoutSeparator/>
43+
<MenuFlyoutItem Text="MenuFlyoutItem" />
44+
</MenuFlyoutSubItem>
2545
</MenuFlyoutSubItem>
26-
</MenuFlyoutSubItem>
27-
<MenuFlyoutSeparator/>
28-
<MenuFlyoutItem Text="MenuFlyoutItem"/>
29-
</MenuFlyout>
30-
</Button.Flyout>
31-
</Button>
46+
<MenuFlyoutSeparator/>
47+
<MenuFlyoutItem Text="MenuFlyoutItem"/>
48+
</MenuFlyout>
49+
</Button.Flyout>
50+
</Button>
3251

33-
<Button Content="Icons" Margin="0,12,0,12">
34-
<Button.Flyout>
35-
<MenuFlyout>
36-
<MenuFlyoutItem Text="Share">
37-
<MenuFlyoutItem.Icon>
38-
<FontIcon Glyph="&#xE72D;"/>
39-
</MenuFlyoutItem.Icon>
40-
</MenuFlyoutItem>
41-
<MenuFlyoutItem Text="Copy" Icon="Copy"/>
42-
<MenuFlyoutItem Text="Delete" Icon="Delete"/>
52+
<Button Content="Icons" Margin="0,12,0,12">
53+
<Button.Flyout>
54+
<MenuFlyout>
55+
<MenuFlyoutItem Text="Share">
56+
<MenuFlyoutItem.Icon>
57+
<FontIcon Glyph="&#xE72D;"/>
58+
</MenuFlyoutItem.Icon>
59+
</MenuFlyoutItem>
60+
<MenuFlyoutItem Text="Copy" Icon="Copy"/>
61+
<MenuFlyoutItem Text="Delete" Icon="Delete"/>
4362
<ToggleMenuFlyoutItem Text="ToggleMenuFlyoutItem" Icon="Delete"/>
4463
<ToggleMenuFlyoutItem Text="ToggleMenuFlyoutItem" Icon="Delete">
4564
<ToggleMenuFlyoutItem.KeyboardAccelerators>
@@ -60,38 +79,55 @@
6079
</muxc:RadioMenuFlyoutItem.KeyboardAccelerators>
6180
</muxc:RadioMenuFlyoutItem>
6281
<MenuFlyoutItem Text="Rename"/>
63-
<MenuFlyoutItem Text="Select"/>
64-
</MenuFlyout>
65-
</Button.Flyout>
66-
</Button>
82+
<MenuFlyoutItem Text="Select"/>
83+
</MenuFlyout>
84+
</Button.Flyout>
85+
</Button>
6786

68-
<Button Content="Keyboard accelerators">
69-
<Button.Flyout>
70-
<MenuFlyout>
71-
<MenuFlyoutItem Text="Share">
72-
<MenuFlyoutItem.Icon>
73-
<FontIcon Glyph="&#xE72D;"/>
74-
</MenuFlyoutItem.Icon>
75-
<MenuFlyoutItem.KeyboardAccelerators>
76-
<KeyboardAccelerator Key="S" Modifiers="Control"/>
77-
</MenuFlyoutItem.KeyboardAccelerators>
78-
</MenuFlyoutItem>
79-
<MenuFlyoutItem Text="Copy" Icon="Copy">
80-
<MenuFlyoutItem.KeyboardAccelerators>
81-
<KeyboardAccelerator Key="C" Modifiers="Control"/>
82-
</MenuFlyoutItem.KeyboardAccelerators>
83-
</MenuFlyoutItem>
84-
<MenuFlyoutItem Text="Delete" Icon="Delete">
85-
<MenuFlyoutItem.KeyboardAccelerators>
86-
<KeyboardAccelerator Key="Delete" />
87-
</MenuFlyoutItem.KeyboardAccelerators>
88-
</MenuFlyoutItem>
89-
<MenuFlyoutSeparator/>
90-
<MenuFlyoutItem Text="Rename"/>
91-
<MenuFlyoutItem Text="Select"/>
92-
</MenuFlyout>
93-
</Button.Flyout>
94-
</Button>
87+
<Button Content="Keyboard accelerators">
88+
<Button.Flyout>
89+
<MenuFlyout>
90+
<MenuFlyoutItem Text="Share">
91+
<MenuFlyoutItem.Icon>
92+
<FontIcon Glyph="&#xE72D;"/>
93+
</MenuFlyoutItem.Icon>
94+
<MenuFlyoutItem.KeyboardAccelerators>
95+
<KeyboardAccelerator Key="S" Modifiers="Control"/>
96+
</MenuFlyoutItem.KeyboardAccelerators>
97+
</MenuFlyoutItem>
98+
<MenuFlyoutItem Text="Copy" Icon="Copy">
99+
<MenuFlyoutItem.KeyboardAccelerators>
100+
<KeyboardAccelerator Key="C" Modifiers="Control"/>
101+
</MenuFlyoutItem.KeyboardAccelerators>
102+
</MenuFlyoutItem>
103+
<MenuFlyoutItem Text="Delete" Icon="Delete">
104+
<MenuFlyoutItem.KeyboardAccelerators>
105+
<KeyboardAccelerator Key="Delete" />
106+
</MenuFlyoutItem.KeyboardAccelerators>
107+
</MenuFlyoutItem>
108+
<MenuFlyoutSeparator/>
109+
<MenuFlyoutItem Text="Rename"/>
110+
<MenuFlyoutItem Text="Select"/>
111+
</MenuFlyout>
112+
</Button.Flyout>
113+
</Button>
95114
</StackPanel>
115+
116+
<Grid Grid.Column="1" Margin="20,0,0,0">
117+
<Grid.RowDefinitions>
118+
<RowDefinition Height="Auto"/>
119+
<RowDefinition Height="Auto"/>
120+
</Grid.RowDefinitions>
121+
<Grid.ColumnDefinitions>
122+
<ColumnDefinition Width="Auto"/>
123+
<ColumnDefinition Width="Auto"/>
124+
</Grid.ColumnDefinitions>
125+
126+
<TextBlock Text="MenuFlyoutItem height: "/>
127+
<TextBlock x:Name="TestMenuFlyoutItemHeightTextBlock" AutomationProperties.Name="TestMenuFlyoutItemHeightTextBlock" Text="0" Grid.Column="1" Margin="5, 0, 0, 0"/>
128+
129+
<TextBlock Text="MenuFlyoutItem width: " Grid.Row="1"/>
130+
<TextBlock x:Name="TestMenuFlyoutItemWidthTextBlock" AutomationProperties.Name="TestMenuFlyoutItemWidthTextBlock" Text="0" Grid.Row="1" Grid.Column="1" Margin="5, 0, 0, 0"/>
131+
</Grid>
96132
</Grid>
97133
</local:TestPage>

dev/CommonStyles/TestUI/MenuFlyoutPage.xaml.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,11 @@ public MenuFlyoutPage()
1616
{
1717
this.InitializeComponent();
1818
}
19+
20+
private void TestMenuFlyoutItemClick(object sender, object e)
21+
{
22+
TestMenuFlyoutItemHeightTextBlock.Text = $"{TestMenuFlyoutItem.ActualHeight}";
23+
TestMenuFlyoutItemWidthTextBlock.Text = $"{TestMenuFlyoutItem.ActualWidth}";
24+
}
1925
}
2026
}

0 commit comments

Comments
 (0)