package Ġopen food facts . github . scr ach x . open food . test Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Log Ċ import Ġandroidx . preference . Preference Manager Ċ import Ġandroidx . test . platform . app . Instrumentation Registry Ċ import Ġandroidx . test . rule . Activity Test Rule Ċ import Ġopen food facts . github . scr ach x . open food . utils . Locale Manager Ċ import Ġopen food facts . github . scr ach x . open food . utils . Preferences Service Ċ import Ġorg . apache . commons . lang 3 . StringUtils Ċ import Ġorg . junit . Assert Ċ Ċ class ĠScreen shot Activity Test Rule < T Ġ: ĠActivity ?> Ċ @ Jvm Over loads Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġactivity Class : ĠClass < T >, ĊĠĠĠĠĠĠĠ Ġvar Ġname : ĠString Ġ= Ġactivity Class . simple Name , ĊĠĠĠĠĠĠĠ Ġval Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlocale Manager : ĠLocale Manager , Ċ ) Ġ: ĠActivity Test Rule < T >( activity Class , Ġfalse , Ġfalse ) Ġ{ ĊĠĠĠ Ġvar Ġafter Activity La unched Action : Ġ(( Screenshot Activity Test Rule < T >) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġvar Ġbefore Activity Started Action : Ġ(( Screenshot Activity Test Rule < T >) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġvar Ġfirst Time La unched Ġ= Ġfalse ĊĠĠĠ Ġvar Ġscreenshot Parameter : ĠScreen shot Parameter ? Ġ= Ġnull ĊĊĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠ Ġoverride Ġfun Ġbefore Activity La unched () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreferences Service ( context ). is First Time Launch Ġ= Ġfirst Time La unched ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocale Manager . save Language To Prefs ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInstrument ation Registry . get Instrumentation (). target Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscreenshot Parameter !!. locale , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( throwable : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrowable . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . fail ( throwable . message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbefore Activity Started Action ?. invoke ( this ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġafter Activity La unched () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġafter Activity La unched Action ?. invoke ( this ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( M ILL IS _ TO _ WAIT _ TO _ DISPLAY _ ACTIVITY . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInstrument ation Registry . get Instrumentation (). waitFor Idle Sync () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtake Screenshot () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish Activity () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( throwable : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( Screenshot Activity Test Rule :: class . simple Name , Ġ" run Ġon Ġui ", Ġthrowable ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġtake Screenshot ( suffix : ĠString ? Ġ= ĠStringUtils . EMPTY ) Ġ{ ĊĠĠĠĠĠĠĠ ĠScreen shot T aker (). take Screenshot ( screenshot Parameter !! , Ġsuffix !! , Ġthis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠM ILL IS _ TO _ WAIT _ TO _ DISPLAY _ ACTIVITY Ġ= Ġ 5 0 0 0 ĊĠĠĠ Ġ} Ċ Ċ } Ċ