@@ -21,6 +21,7 @@ export function SearchForm({
2121 < WikiSelector selectedWiki = { wikiUrl } onChange = { setWikiUrl } />
2222
2323 < PageTitleInput
24+ key = { wikiUrl . href }
2425 initialPageTitle = { searchState . pageTitle }
2526 wikiUrl = { wikiUrl }
2627 />
@@ -328,6 +329,36 @@ if (import.meta.vitest) {
328329 expect ( wikiSelector . value ) . toBe ( 'https://ja.wikipedia.org/' ) ;
329330 } ) ;
330331
332+ it ( 'resets page title input when wiki site changes' , async ( ) => {
333+ const { fireEvent } = await import ( '@testing-library/react' ) ;
334+ const user = userEvent . setup ( ) ;
335+ await act ( async ( ) => renderWithQuery ( < SearchForm { ...defaultProps } /> ) ) ;
336+ const titleInput = screen . getByLabelText (
337+ / W i k i A r t i c l e T i t l e : / i
338+ ) as HTMLInputElement ;
339+
340+ // User types a different title
341+ await user . clear ( titleInput ) ;
342+ await user . type ( titleInput , 'Albert Einstein' ) ;
343+ expect ( titleInput . value ) . toBe ( 'Albert Einstein' ) ;
344+
345+ // Switch wiki site
346+ const wikiSelector =
347+ screen . getByLabelText < HTMLSelectElement > ( / W i k i S i t e : / i) ;
348+ await act ( async ( ) => {
349+ // use fireEvent due to warning of act unsupported
350+ fireEvent . change ( wikiSelector , {
351+ target : { value : 'https://ja.wikipedia.org/' } ,
352+ } ) ;
353+ } ) ;
354+
355+ // PageTitleInput remounts → title resets to initialPageTitle
356+ const resetTitleInput = screen . getByLabelText (
357+ / W i k i A r t i c l e T i t l e : / i
358+ ) as HTMLInputElement ;
359+ expect ( resetTitleInput . value ) . toBe ( 'Initial Title' ) ;
360+ } ) ;
361+
331362 it ( 'renders initial values from searchState' , async ( ) => {
332363 await act ( async ( ) =>
333364 renderWithQuery (
0 commit comments