@@ -59,6 +59,7 @@ describe('ExportForAgentsDialog', () => {
5959 assert . strictEqual ( promptRadioButton . getAttribute ( 'aria-label' ) , 'As prompt' ) ;
6060 assert . strictEqual ( markdownRadioButton . getAttribute ( 'aria-label' ) , 'As markdown' ) ;
6161 assert . strictEqual ( textarea . value , promptText ) ;
62+ assert . isTrue ( textarea . classList . contains ( 'prompt' ) ) ;
6263 assert . strictEqual ( primaryButton . textContent ?. trim ( ) , 'Copy to clipboard' ) ;
6364 assert . strictEqual ( primaryButton ?. getAttribute ( 'accessibleLabel' ) , 'Copy to clipboard' ) ;
6465 } ) ;
@@ -135,8 +136,11 @@ describe('ExportForAgentsDialog', () => {
135136 // spinner should be hidden, textarea should show markdown text.
136137 assert . isNull (
137138 component . contentElement . querySelector ( 'devtools-spinner' ) , 'Spinner should be hidden in markdown view' ) ;
139+
140+ const textareaAfterSwitch =
141+ querySelectorErrorOnMissing < HTMLTextAreaElement > ( component . contentElement , 'textarea' ) ;
138142 assert . strictEqual (
139- textarea . value , markdownText ,
143+ textareaAfterSwitch . value , markdownText ,
140144 'Textarea should show markdown text in markdown view even if prompt is still loading' ) ;
141145
142146 // Clean up.
@@ -187,7 +191,6 @@ describe('ExportForAgentsDialog', () => {
187191
188192 const markdownRadioButton =
189193 querySelectorErrorOnMissing < HTMLInputElement > ( component . contentElement , 'input[value="conversation"]' ) ;
190- const textarea = querySelectorErrorOnMissing < HTMLTextAreaElement > ( component . contentElement , 'textarea' ) ;
191194 const primaryButton =
192195 querySelectorErrorOnMissing < Buttons . Button . Button > ( component . contentElement , 'devtools-button' ) ;
193196
@@ -196,7 +199,9 @@ describe('ExportForAgentsDialog', () => {
196199 await component . updateComplete ;
197200
198201 assert . isTrue ( markdownRadioButton ?. checked ) ;
199- assert . strictEqual ( textarea ?. value , markdownText ) ;
202+ const textareaAfterSwitch = querySelectorErrorOnMissing < HTMLTextAreaElement > ( component . contentElement , 'textarea' ) ;
203+ assert . strictEqual ( textareaAfterSwitch . value , markdownText ) ;
204+ assert . isTrue ( textareaAfterSwitch . classList . contains ( 'conversation' ) ) ;
200205 assert . strictEqual ( primaryButton ?. textContent ?. trim ( ) , 'Save as…' ) ;
201206 assert . strictEqual ( primaryButton . getAttribute ( 'accessibleLabel' ) , 'Save as…' ) ;
202207 assert . strictEqual ( primaryButton . jslogContext , 'ai-export-for-agents.save-as-markdown' ) ;
@@ -292,4 +297,38 @@ describe('ExportForAgentsDialog', () => {
292297 assert . isTrue ( markdownRadioButton2 . checked ) ;
293298 assert . isFalse ( promptRadioButton2 . checked ) ;
294299 } ) ;
300+
301+ it ( 'resets scroll position of textarea when switching tabs' , async ( ) => {
302+ const component = new AiAssistance . ExportForAgentsDialog . ExportForAgentsDialog ( {
303+ dialog,
304+ promptText,
305+ markdownText,
306+ onConversationSaveAs : noop ,
307+ } ) ;
308+ renderElementIntoDOM ( component ) ;
309+ await component . updateComplete ;
310+
311+ const markdownRadioButton =
312+ querySelectorErrorOnMissing < HTMLInputElement > ( component . contentElement , 'input[value="conversation"]' ) ;
313+ const promptRadioButton =
314+ querySelectorErrorOnMissing < HTMLInputElement > ( component . contentElement , 'input[value="prompt"]' ) ;
315+
316+ const textarea1 = querySelectorErrorOnMissing < HTMLTextAreaElement > ( component . contentElement , 'textarea' ) ;
317+ textarea1 . scrollTop = 100 ;
318+
319+ markdownRadioButton . click ( ) ;
320+ await component . updateComplete ;
321+
322+ const textarea2 = querySelectorErrorOnMissing < HTMLTextAreaElement > ( component . contentElement , 'textarea' ) ;
323+ assert . notStrictEqual ( textarea1 , textarea2 , 'Textarea should be recreated on tab switch' ) ;
324+ assert . strictEqual ( textarea2 . scrollTop , 0 , 'Scroll position should be reset' ) ;
325+
326+ textarea2 . scrollTop = 50 ;
327+ promptRadioButton . click ( ) ;
328+ await component . updateComplete ;
329+
330+ const textarea3 = querySelectorErrorOnMissing < HTMLTextAreaElement > ( component . contentElement , 'textarea' ) ;
331+ assert . notStrictEqual ( textarea2 , textarea3 , 'Textarea should be recreated on tab switch back' ) ;
332+ assert . strictEqual ( textarea3 . scrollTop , 0 , 'Scroll position should be reset' ) ;
333+ } ) ;
295334} ) ;
0 commit comments