Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
98c36a1
Update AudioCuesheetEditor.csproj
NeoCoderMatrix86 Sep 24, 2026
d36a2aa
update libraries
NeoCoderMatrix86 Sep 24, 2026
52e5f39
Merge pull request #607 from NeoCoderMatrix86/606-set-version-1320
NeoCoderMatrix86 Sep 24, 2026
0bdd3ef
Update Audiofiles.razor
NeoCoderMatrix86 Sep 25, 2026
08f56c8
moved clearing to seperate method
NeoCoderMatrix86 Sep 28, 2026
0a86685
refactor audiofiles handling
NeoCoderMatrix86 Sep 28, 2026
70b9c91
add alert for validation errors
NeoCoderMatrix86 Sep 28, 2026
19ea5eb
rename files
NeoCoderMatrix86 Sep 28, 2026
d2e63f8
reset file before uploading another one
NeoCoderMatrix86 Sep 28, 2026
13ef198
fix multiple file upload
NeoCoderMatrix86 Sep 29, 2026
e9bbc78
fix basic tests
NeoCoderMatrix86 Sep 29, 2026
dbd6a95
fix import tests
NeoCoderMatrix86 Sep 29, 2026
5d78249
Update ViewModeImport.razor
NeoCoderMatrix86 Sep 29, 2026
bcd544d
Update Audiofiles.razor
NeoCoderMatrix86 Sep 29, 2026
e62cdca
remove localization
NeoCoderMatrix86 Sep 30, 2026
0124ebc
Update Audiofiles.razor
NeoCoderMatrix86 Sep 30, 2026
673f451
set codec during import
NeoCoderMatrix86 Sep 30, 2026
6997b5c
fix import tests
NeoCoderMatrix86 Sep 30, 2026
c5c2f02
Update ViewModeImport.razor
NeoCoderMatrix86 Sep 30, 2026
2c1e4d9
Update InputTextDialog.razor
NeoCoderMatrix86 Sep 30, 2026
0b1166d
fix basic tests
NeoCoderMatrix86 Sep 30, 2026
5fe0f1b
fix tests
NeoCoderMatrix86 Sep 30, 2026
d3ce652
Merge pull request #608 from NeoCoderMatrix86/597-imported-cuesheet-m…
NeoCoderMatrix86 Sep 30, 2026
e1933ef
Update SessionStateContainer.cs
NeoCoderMatrix86 Sep 30, 2026
2075633
Update ImportManager.cs
NeoCoderMatrix86 Oct 1, 2026
43bfd92
Update ImportManager.cs
NeoCoderMatrix86 Oct 1, 2026
a03251c
first step for importing audiofiles
NeoCoderMatrix86 Oct 5, 2026
adbefc3
Update AudioImportService.cs
NeoCoderMatrix86 Oct 5, 2026
31c3f9f
Update ImportAudiofilesDialog.razor
NeoCoderMatrix86 Oct 5, 2026
8136000
Update AudioImportService.cs
NeoCoderMatrix86 Oct 5, 2026
b4c7b86
fix title
NeoCoderMatrix86 Oct 5, 2026
d81c503
Update ImportAudiofilesDialog.razor
NeoCoderMatrix86 Oct 5, 2026
34a8807
Update SessionStateContainer.cs
NeoCoderMatrix86 Oct 5, 2026
ede483c
dialog for mapping of audiofiles
NeoCoderMatrix86 Oct 6, 2026
99bc0aa
Update ImportAudiofilesDialog.razor
NeoCoderMatrix86 Oct 6, 2026
8588321
disable ok while not all files are mapped
NeoCoderMatrix86 Oct 6, 2026
db35c40
display track count
NeoCoderMatrix86 Oct 6, 2026
bbe0f7a
add localization
NeoCoderMatrix86 Oct 6, 2026
5698eb7
Update AudioImportService.cs
NeoCoderMatrix86 Oct 6, 2026
66dce51
add and remove files during import
NeoCoderMatrix86 Oct 6, 2026
3f03cd3
Update FileInputManager.cs
NeoCoderMatrix86 Oct 6, 2026
6986f65
Update AudioImportService.cs
NeoCoderMatrix86 Oct 6, 2026
f8e3976
fix audio file upload bug
NeoCoderMatrix86 Oct 7, 2026
200eaa0
map result of dialog
NeoCoderMatrix86 Oct 7, 2026
573e1ff
revoke object urls if needed
NeoCoderMatrix86 Oct 8, 2026
018fc46
Update AudioImportService.cs
NeoCoderMatrix86 Oct 8, 2026
3dcbf7a
add automatic mapping
NeoCoderMatrix86 Oct 8, 2026
ec1753e
move dialog handling to DialogManager
NeoCoderMatrix86 Oct 8, 2026
2339ebe
Update AudioImportService.cs
NeoCoderMatrix86 Oct 8, 2026
c9f74cf
fix text import and upload of files
NeoCoderMatrix86 Oct 9, 2026
cdc5b06
revoke import audiofiles if aborted
NeoCoderMatrix86 Oct 9, 2026
182ba83
add AudioImportServiceTests
NeoCoderMatrix86 Oct 9, 2026
09bc650
fix for tracing import cuesheet
NeoCoderMatrix86 Oct 9, 2026
f8d3cf1
use detection for object urls
NeoCoderMatrix86 Oct 9, 2026
aeb1baa
fix bug for upload audiofile
NeoCoderMatrix86 Oct 12, 2026
f6de428
Update AudioImportService.cs
NeoCoderMatrix86 Oct 12, 2026
8bfbb36
Merge pull request #610 from NeoCoderMatrix86/589-add-drag-n-drop-sup…
NeoCoderMatrix86 Oct 12, 2026
aac156d
add buttons for moving several positions
NeoCoderMatrix86 Oct 13, 2026
fef7807
Update TrackList.razor
NeoCoderMatrix86 Oct 13, 2026
1ae0010
Update TrackList.razor
NeoCoderMatrix86 Oct 13, 2026
cfeaf55
Update ViewModeRecord.razor
NeoCoderMatrix86 Oct 14, 2026
e04972b
add generic input dialog
NeoCoderMatrix86 Oct 14, 2026
ed2525c
removed seperate countdown dialog
NeoCoderMatrix86 Oct 14, 2026
e65c1fe
Update AppBar.razor
NeoCoderMatrix86 Oct 14, 2026
7376799
moving tracks up several times
NeoCoderMatrix86 Oct 15, 2026
46cbab4
move tracks down several positions
NeoCoderMatrix86 Oct 15, 2026
a68f4db
fix trace redo bug
NeoCoderMatrix86 Oct 15, 2026
3429f4f
Merge pull request #613 from NeoCoderMatrix86/569-add-buttons-for-mov…
NeoCoderMatrix86 Oct 15, 2026
b784af0
set track end during import also
NeoCoderMatrix86 Oct 16, 2026
44b8119
update libraries
NeoCoderMatrix86 Oct 16, 2026
2348c14
Merge pull request #618 from NeoCoderMatrix86/615-last-track-end-not-…
NeoCoderMatrix86 Oct 16, 2026
42326ab
reset player when cuesheet changed
NeoCoderMatrix86 Oct 16, 2026
f5bde32
Merge pull request #619 from NeoCoderMatrix86/616-reset-cuesheet-does…
NeoCoderMatrix86 Oct 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Playwright.MSTest.v4" Version="1.62.0" />
<PackageReference Include="MSTest" Version="4.4.1" />
<PackageReference Include="Microsoft.Playwright.MSTest.v4" Version="1.63.0" />
<PackageReference Include="MSTest" Version="4.5.1" />
</ItemGroup>

<ItemGroup>
Expand Down
8 changes: 8 additions & 0 deletions AudioCuesheetEditor.End2EndTests/Models/AppBar.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}
}
}
5 changes: 2 additions & 3 deletions AudioCuesheetEditor.End2EndTests/Models/DetailView.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down
16 changes: 14 additions & 2 deletions AudioCuesheetEditor.End2EndTests/Tests/Desktop/BasicTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand All @@ -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()
{
Expand Down Expand Up @@ -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\"");
}
}
}
7 changes: 4 additions & 3 deletions AudioCuesheetEditor.End2EndTests/Tests/Desktop/ImportTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
//<http: //www.gnu.org/licenses />.
using AudioCuesheetEditor.End2EndTests.Models;
using Microsoft.Playwright;
using Microsoft.VisualStudio.TestPlatform.ObjectModel;

namespace AudioCuesheetEditor.End2EndTests.Tests.Desktop
{
Expand Down Expand Up @@ -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();
}
Expand Down Expand Up @@ -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]
Expand Down Expand Up @@ -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]
Expand Down
16 changes: 14 additions & 2 deletions AudioCuesheetEditor.End2EndTests/Tests/Smartphone/BasicTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand All @@ -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()
{
Expand Down Expand Up @@ -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\"");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}
Expand Down Expand Up @@ -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]
Expand Down Expand Up @@ -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]
Expand Down
6 changes: 3 additions & 3 deletions AudioCuesheetEditor.Tests/AudioCuesheetEditor.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,12 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Moq" Version="4.20.72" />
<PackageReference Include="coverlet.collector" Version="10.0.1">
<PackageReference Include="Moq" Version="4.21.0" />
<PackageReference Include="coverlet.collector" Version="10.1.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="MSTest" Version="4.4.1" />
<PackageReference Include="MSTest" Version="4.5.1" />
</ItemGroup>

<ItemGroup>
Expand Down
Loading
Loading