@@ -106,6 +106,8 @@ const mockPostMessage = (state: any) => {
106106 shouldShowAnnouncement : false ,
107107 allowedCommands : [ ] ,
108108 alwaysAllowExecute : false ,
109+ ttsEnabled : false ,
110+ ttsSpeed : 1.0 ,
109111 soundEnabled : false ,
110112 soundVolume : 0.5 ,
111113 ...state ,
@@ -132,6 +134,18 @@ describe("SettingsView - Sound Settings", () => {
132134 jest . clearAllMocks ( )
133135 } )
134136
137+ it ( "initializes with tts disabled by default" , ( ) => {
138+ renderSettingsView ( )
139+
140+ const ttsCheckbox = screen . getByRole ( "checkbox" , {
141+ name : / E n a b l e t e x t - t o - s p e e c h / i,
142+ } )
143+ expect ( ttsCheckbox ) . not . toBeChecked ( )
144+
145+ // Speed slider should not be visible when tts is disabled
146+ expect ( screen . queryByRole ( "slider" , { name : / s p e e d / i } ) ) . not . toBeInTheDocument ( )
147+ } )
148+
135149 it ( "initializes with sound disabled by default" , ( ) => {
136150 renderSettingsView ( )
137151
@@ -144,6 +158,29 @@ describe("SettingsView - Sound Settings", () => {
144158 expect ( screen . queryByRole ( "slider" , { name : / v o l u m e / i } ) ) . not . toBeInTheDocument ( )
145159 } )
146160
161+ it ( "toggles tts setting and sends message to VSCode" , ( ) => {
162+ renderSettingsView ( )
163+
164+ const ttsCheckbox = screen . getByRole ( "checkbox" , {
165+ name : / E n a b l e t e x t - t o - s p e e c h / i,
166+ } )
167+
168+ // Enable tts
169+ fireEvent . click ( ttsCheckbox )
170+ expect ( ttsCheckbox ) . toBeChecked ( )
171+
172+ // Click Save to save settings
173+ const saveButton = screen . getByText ( "Save" )
174+ fireEvent . click ( saveButton )
175+
176+ expect ( vscode . postMessage ) . toHaveBeenCalledWith (
177+ expect . objectContaining ( {
178+ type : "ttsEnabled" ,
179+ bool : true ,
180+ } ) ,
181+ )
182+ } )
183+
147184 it ( "toggles sound setting and sends message to VSCode" , ( ) => {
148185 renderSettingsView ( )
149186
@@ -167,6 +204,21 @@ describe("SettingsView - Sound Settings", () => {
167204 )
168205 } )
169206
207+ it ( "shows tts slider when sound is enabled" , ( ) => {
208+ renderSettingsView ( )
209+
210+ // Enable tts
211+ const ttsCheckbox = screen . getByRole ( "checkbox" , {
212+ name : / E n a b l e t e x t - t o - s p e e c h / i,
213+ } )
214+ fireEvent . click ( ttsCheckbox )
215+
216+ // Speed slider should be visible
217+ const speedSlider = screen . getByRole ( "slider" , { name : / s p e e d / i } )
218+ expect ( speedSlider ) . toBeInTheDocument ( )
219+ expect ( speedSlider ) . toHaveValue ( "1.0" )
220+ } )
221+
170222 it ( "shows volume slider when sound is enabled" , ( ) => {
171223 renderSettingsView ( )
172224
@@ -182,6 +234,30 @@ describe("SettingsView - Sound Settings", () => {
182234 expect ( volumeSlider ) . toHaveValue ( "0.5" )
183235 } )
184236
237+ it ( "updates speed and sends message to VSCode when slider changes" , ( ) => {
238+ renderSettingsView ( )
239+
240+ // Enable tts
241+ const ttsCheckbox = screen . getByRole ( "checkbox" , {
242+ name : / E n a b l e t e x t - t o - s p e e c h / i,
243+ } )
244+ fireEvent . click ( ttsCheckbox )
245+
246+ // Change speed
247+ const speedSlider = screen . getByRole ( "slider" , { name : / s p e e d / i } )
248+ fireEvent . change ( speedSlider , { target : { value : "0.75" } } )
249+
250+ // Click Save to save settings
251+ const saveButton = screen . getByText ( "Save" )
252+ fireEvent . click ( saveButton )
253+
254+ // Verify message sent to VSCode
255+ expect ( vscode . postMessage ) . toHaveBeenCalledWith ( {
256+ type : "ttsSpeed" ,
257+ value : 0.75 ,
258+ } )
259+ } )
260+
185261 it ( "updates volume and sends message to VSCode when slider changes" , ( ) => {
186262 renderSettingsView ( )
187263
0 commit comments