@@ -1886,7 +1886,7 @@ test.describe("MIDI Studio V2", () => {
18861886 }
18871887 } ) ;
18881888
1889- test ( "restores Song Setup editable buckets without duplicating diagnostics " , async ( { page } ) => {
1889+ test ( "consolidates existing tab buckets without duplicate editable fields " , async ( { page } ) => {
18901890 const server = await openMidiStudioForImport ( page ) ;
18911891 try {
18921892 await page . locator ( "#toolImportManifestInput" ) . setInputFiles ( uatManifestPath ) ;
@@ -1898,13 +1898,21 @@ test.describe("MIDI Studio V2", () => {
18981898 { id : "song-setup" , text : "Song Setup" } ,
18991899 { id : "studio" , text : "Octave Timeline" }
19001900 ] ) ;
1901+ expect ( tabs ) . toHaveLength ( 6 ) ;
1902+ expect ( tabs . map ( ( tab ) => tab . text ) ) . toEqual ( [
1903+ "Song Setup" ,
1904+ "Octave Timeline" ,
1905+ "Instruments" ,
1906+ "Auto-Create Parts" ,
1907+ "MIDI Import" ,
1908+ "Diagnostics"
1909+ ] ) ;
19011910 expect ( tabs . map ( ( tab ) => tab . text ) ) . not . toContain ( "Studio" ) ;
19021911 await expect ( page . locator ( '[data-midi-studio-tab="song-setup"]' ) ) . toHaveAttribute ( "aria-selected" , "true" ) ;
19031912 await expect ( page . locator ( '.accordion-v2__header[aria-controls="songListContent"]' ) ) . toContainText ( "Songs" ) ;
19041913 await expect ( page . locator ( '.accordion-v2__header[aria-controls="songDetailsContent"]' ) ) . toContainText ( "Song Details" ) ;
19051914 await expect ( page . locator ( '.accordion-v2__header[aria-controls="songSheetContent"]' ) ) . toContainText ( "Song Sheet" ) ;
19061915 await expect ( page . locator ( '.accordion-v2__header[aria-controls="songSectionsLoopContent"]' ) ) . toContainText ( "Sections / Loop" ) ;
1907- await expect ( page . locator ( '.accordion-v2__header[aria-controls="statusLogContent"]' ) ) . toContainText ( "Status" ) ;
19081916 await expect ( page . locator ( "#songDetailsContent" ) ) . toBeVisible ( ) ;
19091917 await expect ( page . locator ( "#songSheetContent" ) ) . toBeVisible ( ) ;
19101918 await expect ( page . locator ( "#songSectionsLoopContent" ) ) . toBeVisible ( ) ;
@@ -1932,6 +1940,8 @@ test.describe("MIDI Studio V2", () => {
19321940 await expect ( page . locator ( "#audioDiagnosticsContent" ) ) . toBeHidden ( ) ;
19331941 await expect ( page . locator ( "#instrumentGridSummaryContent" ) ) . toBeHidden ( ) ;
19341942 await expect ( page . locator ( "#midiImportContent" ) ) . toBeHidden ( ) ;
1943+ await expect ( page . locator ( "#instrumentListContent" ) ) . toBeHidden ( ) ;
1944+ await expect ( page . locator ( "#statusLogContent" ) ) . toBeHidden ( ) ;
19351945 await expect ( page . locator ( "#songDetailsContent #midiImportContent" ) ) . toHaveCount ( 0 ) ;
19361946 await expect ( page . locator ( "#songDetails [data-song-detail-field='sourceMidi']" ) ) . toHaveCount ( 0 ) ;
19371947 await expect ( page . locator ( "#songDetails [data-song-detail-field='instrumentSet']" ) ) . toHaveCount ( 0 ) ;
@@ -1981,10 +1991,80 @@ test.describe("MIDI Studio V2", () => {
19811991 await expect ( page . locator ( "#songDetails [data-song-detail-field='usage']" ) ) . toHaveValue ( "uat, frog-hop, nursery-rhyme" ) ;
19821992
19831993 await selectMidiStudioTab ( page , "instruments" ) ;
1994+ await expect ( page . locator ( "#instrumentListContent" ) ) . toBeVisible ( ) ;
1995+ await expect ( instrumentTypeSelect ( page , "lead" ) ) . toBeVisible ( ) ;
1996+ await expect ( instrumentSelect ( page , "lead" ) ) . toBeVisible ( ) ;
1997+ await expect ( page . locator ( "#addInstrumentRowButton" ) ) . toBeVisible ( ) ;
1998+ await expect ( instrumentToggle ( page , "lead" , "mute" ) ) . toBeVisible ( ) ;
1999+ await expect ( instrumentToggle ( page , "lead" , "solo" ) ) . toBeVisible ( ) ;
2000+ await expect ( instrumentRow ( page , "lead" ) . locator ( "[data-toggle-instrument-visibility='lead']" ) ) . toBeVisible ( ) ;
2001+ await expect ( instrumentRow ( page , "lead" ) . locator ( "[data-delete-instrument-row='lead']" ) ) . toBeVisible ( ) ;
2002+ await expect ( page . locator ( "#songListContent" ) ) . toBeHidden ( ) ;
2003+ await expect ( page . locator ( "#songDetailsContent" ) ) . toBeHidden ( ) ;
2004+ await expect ( page . locator ( "#songSheetContent" ) ) . toBeHidden ( ) ;
2005+ await expect ( page . locator ( "#midiImportContent" ) ) . toBeHidden ( ) ;
2006+ await expect ( page . locator ( "#instrumentGridOutput" ) ) . toBeHidden ( ) ;
2007+ await expect ( page . locator ( "#timelineSelectionContent" ) ) . toBeHidden ( ) ;
2008+ await expect ( page . locator ( "#audioDiagnosticsContent" ) ) . toBeHidden ( ) ;
19842009 await selectInstrumentRow ( page , "lead" ) ;
2010+
2011+ await selectMidiStudioTab ( page , "auto-create-parts" ) ;
2012+ await expect ( page . locator ( "#generateBassFromChordsButton" ) ) . toBeVisible ( ) ;
2013+ await expect ( page . locator ( "#generatePadFromChordsButton" ) ) . toBeVisible ( ) ;
2014+ await expect ( page . locator ( "#generateArpeggioFromChordsButton" ) ) . toBeVisible ( ) ;
2015+ await expect ( page . locator ( "#generateBasicDrumsButton" ) ) . toBeVisible ( ) ;
2016+ await expect ( page . locator ( "#normalizeInstrumentGridButton" ) ) . toBeVisible ( ) ;
2017+ await expect ( page . locator ( "#instrumentGridSectionsInput" ) ) . toBeVisible ( ) ;
2018+ await expect ( page . locator ( "#instrumentGridOutput" ) ) . toBeHidden ( ) ;
2019+ await expect ( page . locator ( "#loopToggle" ) ) . toBeHidden ( ) ;
2020+ await expect ( page . locator ( "#songDetailsContent" ) ) . toBeHidden ( ) ;
2021+ await expect ( page . locator ( "#instrumentListContent" ) ) . toBeHidden ( ) ;
2022+ await expect ( page . locator ( "#midiImportContent" ) ) . toBeHidden ( ) ;
2023+
2024+ await selectMidiStudioTab ( page , "midi-import" ) ;
2025+ await expect ( page . locator ( "#midiImportContent" ) ) . toBeVisible ( ) ;
2026+ await expect ( page . locator ( "#songSourceField" ) ) . toBeVisible ( ) ;
2027+ await expect ( page . locator ( "#instrumentSetField" ) ) . toBeVisible ( ) ;
2028+ await expect ( page . locator ( "#importMidiSourceButton" ) ) . toBeVisible ( ) ;
2029+ await expect ( page . locator ( "#inspectMidiSourceButton" ) ) . toBeVisible ( ) ;
2030+ await expect ( page . locator ( "#midiSourceDetails" ) ) . toBeVisible ( ) ;
2031+ await expect ( page . locator ( "#songListContent" ) ) . toBeHidden ( ) ;
2032+ await expect ( page . locator ( "#songDetailsContent" ) ) . toBeHidden ( ) ;
2033+ await expect ( page . locator ( "#songSheetContent" ) ) . toBeHidden ( ) ;
2034+ await expect ( page . locator ( "#instrumentListContent" ) ) . toBeHidden ( ) ;
2035+ await expect ( page . locator ( "#audioDiagnosticsContent" ) ) . toBeHidden ( ) ;
2036+
2037+ await selectMidiStudioTab ( page , "diagnostics" ) ;
2038+ await expect ( page . locator ( "#inspectorContent" ) ) . toBeVisible ( ) ;
2039+ await expect ( page . locator ( "#instrumentGridSummaryContent" ) ) . toBeVisible ( ) ;
2040+ await expect ( page . locator ( "#audioDiagnosticsContent" ) ) . toBeVisible ( ) ;
2041+ await expect ( page . locator ( "#playbackContent" ) ) . toBeVisible ( ) ;
2042+ await expect ( page . locator ( "#renderedTargetsContent" ) ) . toBeVisible ( ) ;
2043+ await expect ( page . locator ( "#directorContent" ) ) . toBeVisible ( ) ;
2044+ await expect ( page . locator ( "#statusLogContent" ) ) . toBeVisible ( ) ;
2045+ await expect ( page . locator ( "#songListContent" ) ) . toBeHidden ( ) ;
2046+ await expect ( page . locator ( "#songDetailsContent" ) ) . toBeHidden ( ) ;
2047+ await expect ( page . locator ( "#songSheetContent" ) ) . toBeHidden ( ) ;
2048+ await expect ( page . locator ( "#midiImportContent" ) ) . toBeHidden ( ) ;
2049+ await expect ( page . locator ( "#instrumentListContent" ) ) . toBeHidden ( ) ;
2050+ await expect ( page . locator ( "#loopToggle" ) ) . toBeHidden ( ) ;
2051+ const diagnosticEditableControls = await page . locator ( '[data-midi-studio-tab-panel="diagnostics"] input:not([type="hidden"]), [data-midi-studio-tab-panel="diagnostics"] select, [data-midi-studio-tab-panel="diagnostics"] textarea:not([readonly])' ) . count ( ) ;
2052+ expect ( diagnosticEditableControls ) . toBe ( 0 ) ;
2053+ await expect ( page . locator ( "#toolCopyJsonButton" ) ) . toBeVisible ( ) ;
2054+ await expect ( page . locator ( "#clearStatusButton" ) ) . toBeVisible ( ) ;
2055+
19852056 await selectMidiStudioTab ( page , "studio" ) ;
19862057 await waitForCanvasRender ( page ) ;
19872058 await expect ( octaveTimelineCanvas ( page ) ) . toBeVisible ( ) ;
2059+ await expect ( page . locator ( "#instrumentGridOutput" ) ) . toBeVisible ( ) ;
2060+ await expect ( page . locator ( "#timelineSelectionContent" ) ) . toBeVisible ( ) ;
2061+ await expect ( page . locator ( "#loopToggle" ) ) . toBeVisible ( ) ;
2062+ await expect ( page . locator ( "#songListContent" ) ) . toBeHidden ( ) ;
2063+ await expect ( page . locator ( "#songDetailsContent" ) ) . toBeHidden ( ) ;
2064+ await expect ( page . locator ( "#songSheetContent" ) ) . toBeHidden ( ) ;
2065+ await expect ( page . locator ( "#instrumentListContent" ) ) . toBeHidden ( ) ;
2066+ await expect ( page . locator ( "#midiImportContent" ) ) . toBeHidden ( ) ;
2067+ await expect ( page . locator ( "#instrumentGridSummaryContent" ) ) . toBeHidden ( ) ;
19882068 await clickCanvasCell ( page , "C6" , 2 ) ;
19892069 expect ( await page . evaluate ( ( ) => window . __midiStudioV2App . selectedSong ( ) . studioArrangement . lanes . lead ) ) . toContain ( "C6" ) ;
19902070 await page . locator ( "#playButton" ) . click ( ) ;
0 commit comments