diff --git a/AudioCuesheetEditor.End2EndTests/AudioCuesheetEditor.End2EndTests.csproj b/AudioCuesheetEditor.End2EndTests/AudioCuesheetEditor.End2EndTests.csproj
index a7d3d6c0..d02d940a 100644
--- a/AudioCuesheetEditor.End2EndTests/AudioCuesheetEditor.End2EndTests.csproj
+++ b/AudioCuesheetEditor.End2EndTests/AudioCuesheetEditor.End2EndTests.csproj
@@ -24,8 +24,8 @@
-
-
+
+
diff --git a/AudioCuesheetEditor.End2EndTests/Models/AppBar.cs b/AudioCuesheetEditor.End2EndTests/Models/AppBar.cs
index 19076a17..7495aadd 100644
--- a/AudioCuesheetEditor.End2EndTests/Models/AppBar.cs
+++ b/AudioCuesheetEditor.End2EndTests/Models/AppBar.cs
@@ -75,5 +75,13 @@ internal async Task OpenDisplayHotkeysAsync()
await MenuButton.ClickAsync();
await _page.GetByText("Hotkeys").ClickAsync();
}
+
+ internal async Task ResetCuesheetAsync()
+ {
+ await MenuButton.ClickAsync();
+ await _page.GetByRole(AriaRole.Menuitem, new() { Name = "Reset" }).ClickAsync();
+ await _page.GetByText("Reset cuesheet").ClickAsync();
+ await _page.GetByRole(AriaRole.Button, new() { Name = "Yes" }).ClickAsync();
+ }
}
}
diff --git a/AudioCuesheetEditor.End2EndTests/Models/DetailView.cs b/AudioCuesheetEditor.End2EndTests/Models/DetailView.cs
index 6a9cc1dc..4199c03c 100644
--- a/AudioCuesheetEditor.End2EndTests/Models/DetailView.cs
+++ b/AudioCuesheetEditor.End2EndTests/Models/DetailView.cs
@@ -44,7 +44,7 @@ internal async Task AddAudiofileAsync()
internal async Task SetAudiofileInputFileAsync(int audiofileIndex, string file)
{
- await _page.GetByRole(AriaRole.Group).Filter(new() { HasText = "AudiofileAudiofile" }).Nth(audiofileIndex).Locator("input[type=\"file\"]").SetInputFilesAsync(file);
+ await _page.GetByRole(AriaRole.Group).Filter(new() { HasText = "No file uploaded!" }).Nth(audiofileIndex).Locator("input[type=\"file\"]").SetInputFilesAsync(file);
}
internal async Task AddTrackAsync(int audiofileIndex)
@@ -116,8 +116,7 @@ internal async Task RenameAudiofileAsync(int audiofileIndex, string filename)
internal async Task OpenRenameAudiofileDialogAsync(int audiofileIndex)
{
- await _page.GetByRole(AriaRole.Group).Filter(new() { HasText = "AudiofileAudiofile" }).Nth(audiofileIndex).GetByLabel("More").ClickAsync();
- await _page.GetByText("Rename file").ClickAsync();
+ await _page.GetByRole(AriaRole.Button, new() { Name = "Rename file" }).Nth(audiofileIndex).ClickAsync();
}
async Task EditTrackFieldAsync(int trackPosition, string dataLabel, string value)
diff --git a/AudioCuesheetEditor.End2EndTests/Tests/Desktop/BasicTest.cs b/AudioCuesheetEditor.End2EndTests/Tests/Desktop/BasicTest.cs
index a8b43579..874a59b2 100644
--- a/AudioCuesheetEditor.End2EndTests/Tests/Desktop/BasicTest.cs
+++ b/AudioCuesheetEditor.End2EndTests/Tests/Desktop/BasicTest.cs
@@ -48,7 +48,7 @@ public async Task Audiofile_ShouldBeRenamed_WhenEditingFilename()
await detailView.AddAudiofileAsync();
await detailView.SetAudiofileInputFileAsync(0, "Kalimba.mp3");
await detailView.RenameAudiofileAsync(0, "Kalimba test 123.mp3");
- await Expect(TestPage.GetByRole(AriaRole.Textbox, new() { Name = "Audiofile" })).ToMatchAriaSnapshotAsync("- textbox \"Audiofile\": Kalimba test 123.mp3");
+ await Expect(TestPage.GetByRole(AriaRole.Group).Filter(new() { HasText = "Kalimba test 123.mp3" })).ToMatchAriaSnapshotAsync("- group:\r\n - checkbox\r\n - heading \"Kalimba test 123.mp3\" [level=6]\r\n - button \"Upload file\"\r\n - button \"Rename file\"\r\n - button \"Clear file\"");
}
[TestMethod]
@@ -61,6 +61,18 @@ public async Task OpenSettings_ShouldDisplaySettings_WhenSelectingSettings()
await Expect(TestPage.GetByRole(AriaRole.Heading, new() { Name = "Settings" })).ToBeVisibleAsync();
}
+ [TestMethod]
+ public async Task ResetCuesheet_ShouldResetAllCuesheetReferences_WhenResettingCuesheetAsync()
+ {
+ var bar = new AppBar(TestPage);
+ var detailView = new DetailView(TestPage);
+ await detailView.GotoAsync();
+ await detailView.AddAudiofileAsync();
+ await detailView.SetAudiofileInputFileAsync(0, "Kalimba.mp3");
+ await bar.ResetCuesheetAsync();
+ await Expect(TestPage.GetByRole(AriaRole.Tabpanel, new() { Name = "Detail view" })).ToMatchAriaSnapshotAsync("- group:\n - paragraph: \"--:--:--\"\n - slider \"Playback slider\" [disabled]: \"0\"\n - paragraph: \"--:--:--\"\n- group:\n - button \"Play\" [disabled]\n - group:\n - button \"Jump to previous track\" [disabled]\n - button \"Stop the current playback\" [disabled]\n - button \"Jump to next track\" [disabled]");
+ }
+
[TestMethod]
public async Task ChangeLanguage_ShouldSwitchLanguage_WhenGermanIsSelected()
{
@@ -193,7 +205,7 @@ public async Task KeyboardCommands_ShouldControlDialogs_WhenUsingEnterOrEscapeAs
await detailView.NewFileNameInput.FillAsync("Test 123");
await TestPage.Keyboard.PressAsync("Enter");
await TestPage.GetByRole(AriaRole.Dialog).WaitForAsync(new() { State = WaitForSelectorState.Detached });
- await Expect(TestPage.GetByRole(AriaRole.Textbox, new() { Name = "Audiofile" })).ToMatchAriaSnapshotAsync("- textbox \"Audiofile\": Test 123.mp3");
+ await Expect(TestPage.GetByRole(AriaRole.Group).Filter(new() { HasText = "Test 123.mp3" })).ToMatchAriaSnapshotAsync("- group:\r\n - checkbox\r\n - heading \"Test 123.mp3\" [level=6]\r\n - button \"Upload file\"\r\n - button \"Rename file\"\r\n - button \"Clear file\"");
}
}
}
diff --git a/AudioCuesheetEditor.End2EndTests/Tests/Desktop/ImportTest.cs b/AudioCuesheetEditor.End2EndTests/Tests/Desktop/ImportTest.cs
index 6e443a41..00dfb6ef 100644
--- a/AudioCuesheetEditor.End2EndTests/Tests/Desktop/ImportTest.cs
+++ b/AudioCuesheetEditor.End2EndTests/Tests/Desktop/ImportTest.cs
@@ -15,6 +15,7 @@
//.
using AudioCuesheetEditor.End2EndTests.Models;
using Microsoft.Playwright;
+using Microsoft.VisualStudio.TestPlatform.ObjectModel;
namespace AudioCuesheetEditor.End2EndTests.Tests.Desktop
{
@@ -211,7 +212,7 @@ await Expect(TestPage.GetByRole(AriaRole.Table)).ToMatchAriaSnapshotAsync(@"- ta
- button
- rowgroup:
- row");
- await Expect(TestPage.GetByRole(AriaRole.Textbox, new() { Name = "Audiofile" })).ToHaveValueAsync(@"c:\AudioFile.mp3");
+ await Expect(TestPage.GetByRole(AriaRole.Group).Filter(new() { HasText = "c:\\AudioFile.mp3" })).ToMatchAriaSnapshotAsync("- group:\r\n - checkbox\r\n - heading \"c:\\\\AudioFile.mp3\" [level=6]\r\n - button \"Upload file\"\r\n - button \"Rename file\"\r\n - button \"Clear file\"");
await importView.GotoAsync();
await Expect(TestPage.GetByRole(AriaRole.Button, new() { Name = "Analyze" })).ToBeVisibleAsync();
}
@@ -2431,7 +2432,7 @@ await Expect(TestPage.GetByRole(AriaRole.Table)).ToMatchAriaSnapshotAsync(@"- ta
- rowgroup:
- row");
await appBar.UndoAsync();
- await Expect(TestPage.GetByRole(AriaRole.Paragraph).Filter(new() { HasText = "Audiofiles has invalid Count (0)!" })).ToBeVisibleAsync();
+ await Expect(TestPage.GetByRole(AriaRole.Tabpanel, new() { Name = "Detail view" })).ToMatchAriaSnapshotAsync("- text: Audiofiles has invalid count (0)!");
}
[TestMethod]
@@ -2626,7 +2627,7 @@ await Expect(TestPage.GetByRole(AriaRole.Table)).ToMatchAriaSnapshotAsync(@"- ta
- rowgroup:
- row");
await appBar.UndoAsync();
- await Expect(TestPage.GetByRole(AriaRole.Paragraph).Filter(new() { HasText = "Audiofiles has invalid Count (0)!" })).ToBeVisibleAsync();
+ await Expect(TestPage.GetByRole(AriaRole.Tabpanel, new() { Name = "Detail view" })).ToMatchAriaSnapshotAsync("- text: Audiofiles has invalid count (0)!");
}
[TestMethod]
diff --git a/AudioCuesheetEditor.End2EndTests/Tests/Smartphone/BasicTest.cs b/AudioCuesheetEditor.End2EndTests/Tests/Smartphone/BasicTest.cs
index 212587fc..eb0bf1b6 100644
--- a/AudioCuesheetEditor.End2EndTests/Tests/Smartphone/BasicTest.cs
+++ b/AudioCuesheetEditor.End2EndTests/Tests/Smartphone/BasicTest.cs
@@ -50,7 +50,7 @@ public async Task Audiofile_ShouldBeRenamed_WhenEditingFilename()
await detailView.AddAudiofileAsync();
await detailView.SetAudiofileInputFileAsync(0, "Kalimba.mp3");
await detailView.RenameAudiofileAsync(0, "Kalimba test 123.mp3");
- await Expect(TestPage.GetByRole(AriaRole.Textbox, new() { Name = "Audiofile" })).ToMatchAriaSnapshotAsync("- textbox \"Audiofile\": Kalimba test 123.mp3");
+ await Expect(TestPage.GetByRole(AriaRole.Group).Filter(new() { HasText = "Kalimba test 123.mp3" })).ToMatchAriaSnapshotAsync("- group:\r\n - checkbox\r\n - heading \"Kalimba test 123.mp3\" [level=6]\r\n - button \"Upload file\"\r\n - button \"Rename file\"\r\n - button \"Clear file\"");
}
[TestMethod]
@@ -63,6 +63,18 @@ public async Task OpenSettings_ShouldDisplaySettings_WhenSelectingSettings()
await Expect(TestPage.GetByRole(AriaRole.Heading, new() { Name = "Settings" })).ToBeVisibleAsync();
}
+ [TestMethod]
+ public async Task ResetCuesheet_ShouldResetAllCuesheetReferences_WhenResettingCuesheetAsync()
+ {
+ var bar = new AppBar(TestPage);
+ var detailView = new DetailView(TestPage);
+ await detailView.GotoAsync();
+ await detailView.AddAudiofileAsync();
+ await detailView.SetAudiofileInputFileAsync(0, "Kalimba.mp3");
+ await bar.ResetCuesheetAsync();
+ await Expect(TestPage.GetByRole(AriaRole.Tabpanel, new() { Name = "Detail view" })).ToMatchAriaSnapshotAsync("- group:\n - paragraph: \"--:--:--\"\n - slider \"Playback slider\" [disabled]: \"0\"\n - paragraph: \"--:--:--\"\n- group:\n - button \"Play\" [disabled]\n - group:\n - button \"Jump to previous track\" [disabled]\n - button \"Stop the current playback\" [disabled]\n - button \"Jump to next track\" [disabled]");
+ }
+
[TestMethod]
public async Task ChangeLanguage_ShouldSwitchLanguage_WhenGermanIsSelected()
{
@@ -192,7 +204,7 @@ public async Task KeyboardCommands_ShouldControlDialogs_WhenUsingEnterOrEscapeAs
await detailView.NewFileNameInput.FillAsync("Test 123");
await TestPage.Keyboard.PressAsync("Enter");
await TestPage.GetByRole(AriaRole.Dialog).WaitForAsync(new() { State = WaitForSelectorState.Detached });
- await Expect(TestPage.GetByRole(AriaRole.Textbox, new() { Name = "Audiofile" })).ToMatchAriaSnapshotAsync("- textbox \"Audiofile\": Test 123.mp3");
+ await Expect(TestPage.GetByRole(AriaRole.Group).Filter(new() { HasText = "Test 123.mp3" })).ToMatchAriaSnapshotAsync("- group:\r\n - checkbox\r\n - heading \"Test 123.mp3\" [level=6]\r\n - button \"Upload file\"\r\n - button \"Rename file\"\r\n - button \"Clear file\"");
}
}
}
diff --git a/AudioCuesheetEditor.End2EndTests/Tests/Smartphone/ImportTest.cs b/AudioCuesheetEditor.End2EndTests/Tests/Smartphone/ImportTest.cs
index f5ff4614..4bfc7b7a 100644
--- a/AudioCuesheetEditor.End2EndTests/Tests/Smartphone/ImportTest.cs
+++ b/AudioCuesheetEditor.End2EndTests/Tests/Smartphone/ImportTest.cs
@@ -248,7 +248,7 @@ await Expect(TestPage.GetByRole(AriaRole.Table)).ToMatchAriaSnapshotAsync(@"- ta
- cell ""Status"":
- text: Status
- button");
- await Expect(TestPage.GetByRole(AriaRole.Textbox, new() { Name = "Audiofile" })).ToHaveValueAsync(@"c:\AudioFile.mp3");
+ await Expect(TestPage.GetByRole(AriaRole.Group).Filter(new() { HasText = "c:\\AudioFile.mp3" })).ToMatchAriaSnapshotAsync("- group:\r\n - checkbox\r\n - heading \"c:\\\\AudioFile.mp3\" [level=6]\r\n - button \"Upload file\"\r\n - button \"Rename file\"\r\n - button \"Clear file\"");
await importView.GotoAsync();
await Expect(TestPage.GetByRole(AriaRole.Button, new() { Name = "Analyze" })).ToBeVisibleAsync();
}
@@ -2984,7 +2984,7 @@ await Expect(TestPage.GetByRole(AriaRole.Table)).ToMatchAriaSnapshotAsync(@"- ta
- text: Status
- button");
await appBar.UndoAsync();
- await Expect(TestPage.GetByRole(AriaRole.Paragraph).Filter(new() { HasText = "Audiofiles has invalid Count (0)!" })).ToBeVisibleAsync();
+ await Expect(TestPage.GetByRole(AriaRole.Tabpanel, new() { Name = "Detail view" })).ToMatchAriaSnapshotAsync("- text: Audiofiles has invalid count (0)!");
}
[TestMethod]
@@ -3214,7 +3214,7 @@ await Expect(TestPage.GetByRole(AriaRole.Table)).ToMatchAriaSnapshotAsync(@"- ta
- text: Status
- button");
await appBar.UndoAsync();
- await Expect(TestPage.GetByRole(AriaRole.Paragraph).Filter(new() { HasText = "Audiofiles has invalid Count (0)!" })).ToBeVisibleAsync();
+ await Expect(TestPage.GetByRole(AriaRole.Tabpanel, new() { Name = "Detail view" })).ToMatchAriaSnapshotAsync("- text: Audiofiles has invalid count (0)!");
}
[TestMethod]
diff --git a/AudioCuesheetEditor.Tests/AudioCuesheetEditor.Tests.csproj b/AudioCuesheetEditor.Tests/AudioCuesheetEditor.Tests.csproj
index 0714cf11..8fec56a1 100644
--- a/AudioCuesheetEditor.Tests/AudioCuesheetEditor.Tests.csproj
+++ b/AudioCuesheetEditor.Tests/AudioCuesheetEditor.Tests.csproj
@@ -19,12 +19,12 @@
-
-
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
diff --git a/AudioCuesheetEditor.Tests/Services/AudioCuesheet/AudiofileManagerTests.cs b/AudioCuesheetEditor.Tests/Services/AudioCuesheet/AudiofileManagerTests.cs
index 73565f58..00da412f 100644
--- a/AudioCuesheetEditor.Tests/Services/AudioCuesheet/AudiofileManagerTests.cs
+++ b/AudioCuesheetEditor.Tests/Services/AudioCuesheet/AudiofileManagerTests.cs
@@ -78,7 +78,7 @@ public AudiofileManagerTests()
}
[TestMethod]
- public async Task SetPropertiesAsync_EmptyBrowserFile_ShouldClearPropertiesAsync()
+ public async Task ClearPropertiesAsync_ValidBrowserFile_ShouldClearPropertiesAsync()
{
// Arrange
var audiofile = new Audiofile
@@ -88,24 +88,26 @@ public async Task SetPropertiesAsync_EmptyBrowserFile_ShouldClearPropertiesAsync
ObjectURL = "Just a test",
Duration = TimeSpan.FromSeconds(120)
};
- var audiofileChangedFired = false;
+ var audiofileChangedFired = 0;
_audiofileManager.AudiofileChanged += delegate(object? sender, Audiofile e)
{
if (e == audiofile)
{
- audiofileChangedFired = true;
+ audiofileChangedFired++;
}
};
var expectedUrl = audiofile.ObjectURL;
// Act
- await _audiofileManager.SetPropertiesAsync(audiofile, null, string.Empty);
+ await _audiofileManager.ClearPropertiesAsync(audiofile);
// Assert
Assert.IsNull(audiofile.AudioCodec);
Assert.IsNull(audiofile.Name);
Assert.IsNull(audiofile.ObjectURL);
Assert.IsNull(audiofile.Duration);
- Assert.IsTrue(audiofileChangedFired);
+ Assert.AreEqual(1, audiofileChangedFired);
_jsRuntime.Verify(js => js.InvokeAsync