@@ -103,6 +103,65 @@ public async Task Import()
103103 await Expect ( Page . GetByRole ( AriaRole . Group ) . Filter ( new ( ) { HasText = "AudiofileAudiofile Search" } ) . Locator ( "input[type=\" file\" ]" ) ) . ToBeEmptyAsync ( ) ;
104104 }
105105
106- //TODO: Generate cuesheet
106+ [ TestMethod ]
107+ public async Task GenerateCuesheet ( )
108+ {
109+ await Page . GotoAsync ( "http://localhost:5132/" ) ;
110+ await Page . GetByRole ( AriaRole . Button , new ( ) { Name = "File" , Exact = true } ) . ClickAsync ( ) ;
111+ await Page . GetByText ( "Open" ) . ClickAsync ( ) ;
112+ await Page . Locator ( "#dropFileInputId_SelectFileDialog" ) . GetByRole ( AriaRole . Button , new ( ) { Name = "Choose File" } ) . ClickAsync ( ) ;
113+ await Page . Locator ( "#dropFileInputId_SelectFileDialog" ) . GetByRole ( AriaRole . Button , new ( ) { Name = "Choose File" } ) . SetInputFilesAsync ( new [ ] { "../../../../AudioCuesheetEditor/wwwroot/samples/Sample_Cuesheet.cue" } ) ;
114+ await Expect ( Page . GetByRole ( AriaRole . Textbox , new ( ) { Name = "Cuesheet artist" } ) ) . ToHaveValueAsync ( "Sample CD Artist" ) ;
115+ await Expect ( Page . GetByRole ( AriaRole . Textbox , new ( ) { Name = "Cuesheet title" } ) ) . ToHaveValueAsync ( "Sample CD Title" ) ;
116+ await Expect ( Page . GetByRole ( AriaRole . Cell , new ( ) { Name = "Sample Artist 6" } ) . GetByRole ( AriaRole . Textbox ) ) . ToHaveValueAsync ( "Sample Artist 6" ) ;
117+ await Expect ( Page . GetByRole ( AriaRole . Row , new ( ) { Name = "Increment Decrement Sample Artist 7 Clear Sample Title 7 Clear 00:31:54 00:45:" } ) . GetByRole ( AriaRole . Textbox ) . Nth ( 3 ) ) . ToHaveValueAsync ( "00:45:54" ) ;
118+ await Page . GetByRole ( AriaRole . Button , new ( ) { Name = "File" , Exact = true } ) . ClickAsync ( ) ;
119+ await Page . GetByText ( "Export" ) . ClickAsync ( ) ;
120+ await Page . GetByText ( "Cuesheet" , new ( ) { Exact = true } ) . ClickAsync ( ) ;
121+ var download = await Page . RunAndWaitForDownloadAsync ( async ( ) =>
122+ {
123+ await Page . GetByRole ( AriaRole . Row , new ( ) { Name = "Cuesheet.cue 00:00:00 00:45:" } ) . GetByRole ( AriaRole . Button ) . ClickAsync ( ) ;
124+ } ) ;
125+ // Read the downloaded file content as text
126+ var cuesheetContent = await download . PathAsync ( ) ;
127+ var actualText = await File . ReadAllTextAsync ( cuesheetContent ) ;
128+ var expectedText = @"TITLE ""Sample CD Title""
129+ PERFORMER ""Sample CD Artist""
130+ FILE ""Sample.mp3"" MP3
131+ TRACK 01 AUDIO
132+ TITLE ""Sample Title 1""
133+ PERFORMER ""Sample Artist 1""
134+ INDEX 01 00:00:00
135+ TRACK 02 AUDIO
136+ TITLE ""Sample Title 2""
137+ PERFORMER ""Sample Artist 2""
138+ INDEX 01 05:00:00
139+ TRACK 03 AUDIO
140+ TITLE ""Sample Title 3""
141+ PERFORMER ""Sample Artist 3""
142+ INDEX 01 09:23:00
143+ TRACK 04 AUDIO
144+ TITLE ""Sample Title 4""
145+ PERFORMER ""Sample Artist 4""
146+ INDEX 01 15:54:00
147+ TRACK 05 AUDIO
148+ TITLE ""Sample Title 5""
149+ PERFORMER ""Sample Artist 5""
150+ INDEX 01 20:13:00
151+ TRACK 06 AUDIO
152+ TITLE ""Sample Title 6""
153+ PERFORMER ""Sample Artist 6""
154+ INDEX 01 24:54:00
155+ TRACK 07 AUDIO
156+ TITLE ""Sample Title 7""
157+ PERFORMER ""Sample Artist 7""
158+ INDEX 01 31:54:00
159+ TRACK 08 AUDIO
160+ TITLE ""Sample Title 8""
161+ PERFORMER ""Sample Artist 8""
162+ INDEX 01 45:54:00
163+ " ;
164+ Assert . AreEqual ( expectedText . Replace ( "\r \n " , "\n " ) , actualText . Replace ( "\r \n " , "\n " ) ) ;
165+ }
107166 }
108167}
0 commit comments