@@ -53,7 +53,27 @@ const TestSets = () => {
5353 console . log ( 'TestSets: Loading test sets...' ) ;
5454 const result = await client . graphql ( { query : GET_TEST_SETS } ) ;
5555 console . log ( 'TestSets: GraphQL result:' , result ) ;
56- setTestSets ( result . data . getTestSets || [ ] ) ;
56+ const backendTestSets = result . data . getTestSets || [ ] ;
57+
58+ // Upsert: merge backend data with existing UI state, deduplicating by id
59+ setTestSets ( ( prevTestSets ) => {
60+ const merged = [ ...prevTestSets ] ;
61+
62+ backendTestSets . forEach ( ( backendTestSet ) => {
63+ const existingIndex = merged . findIndex ( ( ts ) => ts . id === backendTestSet . id ) ;
64+ if ( existingIndex >= 0 ) {
65+ // Update existing with fresh backend data
66+ merged [ existingIndex ] = backendTestSet ;
67+ } else {
68+ // Add new test set from backend
69+ merged . push ( backendTestSet ) ;
70+ }
71+ } ) ;
72+
73+ // Keep active test sets even if missing from backend (during processing)
74+ const backendIds = new Set ( backendTestSets . map ( ( ts ) => ts . id ) ) ;
75+ return merged . filter ( ( ts ) => backendIds . has ( ts . id ) || ( ts . status !== 'COMPLETED' && ts . status !== 'FAILED' ) ) ;
76+ } ) ;
5777 } catch ( err ) {
5878 console . error ( 'TestSets: Failed to load test sets:' , err ) ;
5979 setError ( `Failed to load test sets: ${ err . message || 'Unknown error' } ` ) ;
@@ -180,10 +200,8 @@ const TestSets = () => {
180200 console . log ( 'New test set data:' , newTestSet ) ;
181201
182202 if ( newTestSet ) {
183- const updatedTestSets = [ ...testSets , newTestSet ] ;
184- console . log ( 'Updating testSets from' , testSets . length , 'to' , updatedTestSets . length ) ;
185- console . log ( 'New test set added:' , newTestSet ) ;
186- setTestSets ( updatedTestSets ) ;
203+ // Immediate UI update for responsive feedback
204+ setTestSets ( ( prev ) => [ ...prev , newTestSet ] ) ;
187205 setNewTestSetName ( '' ) ;
188206 setFilePattern ( '' ) ;
189207 setFileCount ( 0 ) ;
@@ -285,6 +303,8 @@ const TestSets = () => {
285303 createdAt : new Date ( ) . toISOString ( ) ,
286304 filePattern : null ,
287305 } ;
306+
307+ // Immediate UI update for responsive feedback
288308 setTestSets ( ( prev ) => [ ...prev , newTestSet ] ) ;
289309
290310 setSuccessMessage ( `Test set "${ newTestSetName } " created successfully. Zip file is being processed.` ) ;
0 commit comments