@@ -205,3 +205,43 @@ test('useWakeLock reacquires wake lock on page visibility change when `reacquire
205205 expect ( result . current . released ) . toBe ( false ) ;
206206 expect ( handleError ) . not . toHaveBeenCalled ( ) ;
207207} ) ;
208+
209+ test ( 'after releasing, useWakeLock reacquires wake lock on page visibility change when `reacquireOnPageVisible` is true' , async ( ) => {
210+ const handleError = jest . fn ( ) ;
211+ const { result } = renderHook ( ( ) => useWakeLock ( { reacquireOnPageVisible : true , onError : handleError } ) ) ;
212+
213+ await act ( async ( ) => {
214+ await result . current . request ( ) ;
215+ } ) ;
216+
217+ expect ( window . navigator . wakeLock . request ) . toHaveBeenCalledTimes ( 1 ) ;
218+ expect ( result . current . type ) . toEqual ( 'screen' ) ;
219+ expect ( result . current . released ) . toBe ( false ) ;
220+
221+ await act ( async ( ) => {
222+ await result . current . release ( ) ;
223+ } ) ;
224+
225+ expect ( result . current . released ) . toBe ( true ) ;
226+
227+ // Mock document.visibilityState to 'hidden'
228+ Object . defineProperty ( document , 'visibilityState' , {
229+ value : 'hidden' ,
230+ configurable : true ,
231+ } ) ;
232+ document . dispatchEvent ( new Event ( 'visibilitychange' ) ) ;
233+
234+ // Mock document.visibilityState to 'visible'
235+ Object . defineProperty ( document , 'visibilityState' , {
236+ value : 'visible' ,
237+ configurable : true ,
238+ } ) ;
239+ await act ( async ( ) => {
240+ document . dispatchEvent ( new Event ( 'visibilitychange' ) ) ;
241+ } ) ;
242+
243+ expect ( window . navigator . wakeLock . request ) . toHaveBeenCalledTimes ( 2 ) ;
244+ expect ( result . current . type ) . toEqual ( 'screen' ) ;
245+ expect ( result . current . released ) . toBe ( false ) ;
246+ expect ( handleError ) . not . toHaveBeenCalled ( ) ;
247+ } ) ;
0 commit comments