Skip to content

Commit 373005b

Browse files
add shortcut tests
1 parent e7c8897 commit 373005b

4 files changed

Lines changed: 102 additions & 4 deletions

File tree

AudioCuesheetEditor.End2EndTests/Models/AppBar.cs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,17 +62,28 @@ internal async Task RedoAsync()
6262

6363
internal async Task OpenFileAsync(string file)
6464
{
65-
await _page.GetByRole(AriaRole.Button, new() { Name = "File", Exact = true }).ClickAsync();
66-
await _page.Locator("div").Filter(new() { HasTextRegex = OpenRegex() }).ClickAsync();
65+
await OpenFileDialogAsync();
6766
await _page.Locator("#dropFileInputId_SelectFileDialog").GetByRole(AriaRole.Button, new() { Name = "Choose File" }).ClickAsync();
6867
await _page.Locator("#dropFileInputId_SelectFileDialog").GetByRole(AriaRole.Button, new() { Name = "Choose File" }).SetInputFilesAsync(file);
6968
}
7069

70+
internal async Task OpenFileDialogAsync()
71+
{
72+
await _page.GetByRole(AriaRole.Button, new() { Name = "File", Exact = true }).ClickAsync();
73+
await _page.Locator("div").Filter(new() { HasTextRegex = OpenRegex() }).ClickAsync();
74+
}
75+
7176
internal async Task OpenExportDialogAsync(string exportType, string fileMenuName = "File")
7277
{
7378
await _page.GetByRole(AriaRole.Button, new() { Name = fileMenuName, Exact = true }).ClickAsync();
7479
await _page.GetByText("Export", new() { Exact = true }).HoverAsync();
7580
await _page.GetByText(exportType, new() { Exact = true }).ClickAsync();
7681
}
82+
83+
internal async Task OpenDisplayHotkeysAsync()
84+
{
85+
await _page.GetByRole(AriaRole.Button, new() { Name = "More" }).ClickAsync();
86+
await _page.GetByText("Hotkeys").ClickAsync();
87+
}
7788
}
7889
}

AudioCuesheetEditor.End2EndTests/Models/DetailView.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ internal class DetailView(IPage page, bool mobile)
3030

3131
internal ILocator CuesheetTitleInput => _page.GetByRole(AriaRole.Textbox, new() { Name = "Cuesheet title" });
3232

33+
internal ILocator NewFileNameInput => _page.GetByRole(AriaRole.Textbox, new() { Name = "New file name" });
34+
3335
internal async Task GotoAsync()
3436
{
3537
await _page.GotoAsync(BaseUrl);
@@ -99,12 +101,17 @@ internal async Task EditTracksModalAsync(string artist, string title, string end
99101
}
100102

101103
internal async Task RenameAudiofileAsync(string filename)
104+
{
105+
await OpenRenameAudiofileDialogAsync();
106+
await NewFileNameInput.FillAsync(filename);
107+
await _page.GetByRole(AriaRole.Button, new() { Name = "Ok" }).ClickAsync();
108+
}
109+
110+
internal async Task OpenRenameAudiofileDialogAsync()
102111
{
103112
int buttonIndex = _isMobile ? 2 : 3;
104113
await _page.GetByRole(AriaRole.Group).Filter(new() { HasText = "AudiofileAudiofile" }).GetByRole(AriaRole.Button).Nth(buttonIndex).ClickAsync();
105114
await _page.GetByText("Rename file").ClickAsync();
106-
await _page.GetByRole(AriaRole.Textbox, new() { Name = "New file name" }).FillAsync(filename);
107-
await _page.GetByRole(AriaRole.Button, new() { Name = "Ok" }).ClickAsync();
108115
}
109116
}
110117
}

AudioCuesheetEditor.End2EndTests/Tests/Desktop/BasicTest.cs

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
//<http: //www.gnu.org/licenses />.
1616
using AudioCuesheetEditor.End2EndTests.Models;
1717
using Microsoft.Playwright;
18+
using System.Xml.Linq;
19+
using static System.Net.Mime.MediaTypeNames;
1820

1921
namespace AudioCuesheetEditor.End2EndTests.Tests.Desktop
2022
{
@@ -103,5 +105,44 @@ await Expect(TestPage.GetByLabel("Track table controls")).ToMatchAriaSnapshotAsy
103105
- button ""Ausgewählte Titel nach unten bewegen""
104106
- button ""Fester Tabellenkopf""");
105107
}
108+
109+
[TestMethod]
110+
public async Task KeyboardCommands_ShouldControlDialogs_WhenUsingEnterOrEscapeAsync()
111+
{
112+
var bar = new AppBar(TestPage);
113+
var detailView = new DetailView(TestPage, DeviceName != null);
114+
await detailView.GotoAsync();
115+
await bar.OpenFileDialogAsync();
116+
await Expect(TestPage.GetByRole(AriaRole.Dialog)).ToBeVisibleAsync();
117+
await TestPage.Keyboard.PressAsync("Escape");
118+
await TestPage.GetByRole(AriaRole.Dialog).WaitForAsync(new() { State = WaitForSelectorState.Detached });
119+
await bar.OpenExportDialogAsync("Cuesheet");
120+
await Expect(TestPage.GetByRole(AriaRole.Dialog)).ToBeVisibleAsync();
121+
await TestPage.Keyboard.PressAsync("Escape");
122+
await TestPage.GetByRole(AriaRole.Dialog).WaitForAsync(new() { State = WaitForSelectorState.Detached });
123+
await bar.OpenExportDialogAsync("Projectfile");
124+
await Expect(TestPage.GetByRole(AriaRole.Dialog)).ToBeVisibleAsync();
125+
await TestPage.Keyboard.PressAsync("Escape");
126+
await TestPage.GetByRole(AriaRole.Dialog).WaitForAsync(new() { State = WaitForSelectorState.Detached });
127+
await bar.OpenExportDialogAsync("Textfile");
128+
await Expect(TestPage.GetByRole(AriaRole.Dialog)).ToBeVisibleAsync();
129+
await TestPage.Keyboard.PressAsync("Escape");
130+
await TestPage.GetByRole(AriaRole.Dialog).WaitForAsync(new() { State = WaitForSelectorState.Detached });
131+
await bar.OpenSettingsAsync();
132+
await Expect(TestPage.GetByRole(AriaRole.Dialog)).ToBeVisibleAsync();
133+
await TestPage.Keyboard.PressAsync("Escape");
134+
await TestPage.GetByRole(AriaRole.Dialog).WaitForAsync(new() { State = WaitForSelectorState.Detached });
135+
await bar.OpenDisplayHotkeysAsync();
136+
await Expect(TestPage.GetByRole(AriaRole.Dialog)).ToBeVisibleAsync();
137+
await TestPage.Keyboard.PressAsync("Escape");
138+
await TestPage.GetByRole(AriaRole.Dialog).WaitForAsync(new() { State = WaitForSelectorState.Detached });
139+
await detailView.AudiofileInput.SetInputFilesAsync("Kalimba.mp3");
140+
await detailView.OpenRenameAudiofileDialogAsync();
141+
await Expect(TestPage.GetByRole(AriaRole.Dialog)).ToBeVisibleAsync();
142+
await detailView.NewFileNameInput.FillAsync("Test 123");
143+
await TestPage.Keyboard.PressAsync("Enter");
144+
await TestPage.GetByRole(AriaRole.Dialog).WaitForAsync(new() { State = WaitForSelectorState.Detached });
145+
await Expect(detailView.AudiofileInput).ToHaveTextAsync("Test 123.mp3");
146+
}
106147
}
107148
}

AudioCuesheetEditor.End2EndTests/Tests/Smartphone/BasicTestSmartphone.cs

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,5 +102,44 @@ await Expect(TestPage.GetByLabel("Track table controls")).ToMatchAriaSnapshotAsy
102102
- button
103103
- button ""Fester Tabellenkopf""");
104104
}
105+
106+
[TestMethod]
107+
public async Task KeyboardCommands_ShouldControlDialogs_WhenUsingEnterOrEscapeAsync()
108+
{
109+
var bar = new AppBar(TestPage);
110+
var detailView = new DetailView(TestPage, DeviceName != null);
111+
await detailView.GotoAsync();
112+
await bar.OpenFileDialogAsync();
113+
await Expect(TestPage.GetByRole(AriaRole.Dialog)).ToBeVisibleAsync();
114+
await TestPage.Keyboard.PressAsync("Escape");
115+
await TestPage.GetByRole(AriaRole.Dialog).WaitForAsync(new() { State = WaitForSelectorState.Detached });
116+
await bar.OpenExportDialogAsync("Cuesheet");
117+
await Expect(TestPage.GetByRole(AriaRole.Dialog)).ToBeVisibleAsync();
118+
await TestPage.Keyboard.PressAsync("Escape");
119+
await TestPage.GetByRole(AriaRole.Dialog).WaitForAsync(new() { State = WaitForSelectorState.Detached });
120+
await bar.OpenExportDialogAsync("Projectfile");
121+
await Expect(TestPage.GetByRole(AriaRole.Dialog)).ToBeVisibleAsync();
122+
await TestPage.Keyboard.PressAsync("Escape");
123+
await TestPage.GetByRole(AriaRole.Dialog).WaitForAsync(new() { State = WaitForSelectorState.Detached });
124+
await bar.OpenExportDialogAsync("Textfile");
125+
await Expect(TestPage.GetByRole(AriaRole.Dialog)).ToBeVisibleAsync();
126+
await TestPage.Keyboard.PressAsync("Escape");
127+
await TestPage.GetByRole(AriaRole.Dialog).WaitForAsync(new() { State = WaitForSelectorState.Detached });
128+
await bar.OpenSettingsAsync();
129+
await Expect(TestPage.GetByRole(AriaRole.Dialog)).ToBeVisibleAsync();
130+
await TestPage.Keyboard.PressAsync("Escape");
131+
await TestPage.GetByRole(AriaRole.Dialog).WaitForAsync(new() { State = WaitForSelectorState.Detached });
132+
await bar.OpenDisplayHotkeysAsync();
133+
await Expect(TestPage.GetByRole(AriaRole.Dialog)).ToBeVisibleAsync();
134+
await TestPage.Keyboard.PressAsync("Escape");
135+
await TestPage.GetByRole(AriaRole.Dialog).WaitForAsync(new() { State = WaitForSelectorState.Detached });
136+
await detailView.AudiofileInput.SetInputFilesAsync("Kalimba.mp3");
137+
await detailView.OpenRenameAudiofileDialogAsync();
138+
await Expect(TestPage.GetByRole(AriaRole.Dialog)).ToBeVisibleAsync();
139+
await detailView.NewFileNameInput.FillAsync("Test 123");
140+
await TestPage.Keyboard.PressAsync("Enter");
141+
await TestPage.GetByRole(AriaRole.Dialog).WaitForAsync(new() { State = WaitForSelectorState.Detached });
142+
await Expect(detailView.AudiofileInput).ToHaveTextAsync("Test 123.mp3");
143+
}
105144
}
106145
}

0 commit comments

Comments
 (0)