@@ -96,6 +96,45 @@ test('duck-ai-data-clearing feature handles localStorage errors gracefully', asy
9696 expect ( messages [ 0 ] . payload . method ) . toBe ( 'duckAiClearDataFailed' ) ;
9797} ) ;
9898
99+ test ( 'duck-ai-data-clearing feature succeeds when data collections do not exist or are empty' , async ( { page } , testInfo ) => {
100+ const collector = ResultsCollector . create ( page , testInfo . project . use ) ;
101+ collector . withUserPreferences ( {
102+ messageSecret : 'ABC' ,
103+ javascriptInterface : 'javascriptInterface' ,
104+ messageCallback : 'messageCallback' ,
105+ } ) ;
106+ await collector . load ( HTML , CONFIG ) ;
107+
108+ const duckAiDataClearing = new DuckAiDataClearingSpec ( page ) ;
109+
110+ // Ensure localStorage item doesn't exist
111+ await page . evaluate ( ( ) => {
112+ localStorage . removeItem ( 'savedAIChats' ) ;
113+ } ) ;
114+
115+ // Ensure IndexedDB is clean (no existing database or object store)
116+ await page . evaluate ( ( ) => {
117+ return new Promise ( ( resolve ) => {
118+ const deleteRequest = indexedDB . deleteDatabase ( 'savedAIChatData' ) ;
119+ deleteRequest . onsuccess = ( ) => resolve ( null ) ;
120+ deleteRequest . onerror = ( ) => resolve ( null ) ; // Continue even if delete fails
121+ deleteRequest . onblocked = ( ) => resolve ( null ) ; // Continue even if blocked
122+ } ) ;
123+ } ) ;
124+
125+ // Trigger data clearing on non-existent/empty data
126+ await collector . simulateSubscriptionMessage ( 'duckAiDataClearing' , 'duckAiClearData' , { } ) ;
127+
128+ // Should still get completion message since there's nothing to fail
129+ const messages = await collector . waitForMessage ( 'duckAiClearDataCompleted' , 1 ) ;
130+ expect ( messages ) . toHaveLength ( 1 ) ;
131+ expect ( messages [ 0 ] . payload . method ) . toBe ( 'duckAiClearDataCompleted' ) ;
132+
133+ // Verify that subsequent verification shows no data exists
134+ await duckAiDataClearing . verifyDataCleared ( ) ;
135+ await duckAiDataClearing . waitForVerification ( 'Verification complete: All data cleared' ) ;
136+ } ) ;
137+
99138class DuckAiDataClearingSpec {
100139 /**
101140 * @param {import("@playwright/test").Page } page
0 commit comments