package Ġcom . av ito . android . runner Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroidx . annotation . Call Super Ċ import Ġandroidx . test . espress o . Esp ress o Ċ import Ġandroidx . test . platform . app . Instrumentation Registry Ċ import Ġandroidx . test . runner . Android JUnit Runner Ċ import Ġcom . av ito . android . mock . Mock Dispatcher Ċ import Ġcom . av ito . android . monitoring . Composite Test Issues Monitor Ċ import Ġcom . av ito . android . monitoring . Test Issues Monitor Ċ import Ġcom . av ito . android . monitoring . create S entry Ċ import Ġcom . av ito . android . runner . annotation . resolver . Test Metadata Injector Ċ import Ġcom . av ito . android . test . UIT est Config Ċ import Ġcom . av ito . android . test . interceptor . Human Readable Action Interceptor Ċ import Ġcom . av ito . android . test . interceptor . Human Readable Assertion Interceptor Ċ import Ġcom . av ito . android . test . report .* Ċ import Ġcom . av ito . android . test . report . incident . App Crash Exception Ċ import Ġcom . av ito . android . test . report . listener . Test Lifecycle Notifier Ċ import Ġcom . av ito . android . test . report . model . Test Metadata Ċ import Ġcom . av ito . android . test . report . performance . Performance Provider Ċ import Ġcom . av ito . android . test . report . performance . Performance Test Reporter Ċ import Ġcom . av ito . android . test . report . transport . External Storage Transport Ċ import Ġcom . av ito . android . test . report . transport . Local Run Transport Ċ import Ġcom . av ito . android . test . report . transport . Transport Ċ import Ġcom . av ito . android . test . report . video . Video Capture Test Listener Ċ import Ġcom . av ito . android . util . Device Settings Checker Ċ import Ġcom . av ito . android . util . I mit ate Flag Provider Ċ import Ġcom . av ito . logger . Logger Ċ import Ġcom . av ito . report . model . Device Name Ċ import Ġcom . av ito . report . model . Entry Type Adapter Factory Ċ import Ġcom . av ito . report . model . Kind Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġokhttp 3 . Http Url Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . mock webserver . Mock WebServer Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ abstract Ġclass ĠIn House Instrumentation TestRunner Ġ: ĊĠĠĠ ĠAndroid JUnit Runner (), ĊĠĠĠ ĠReport Provider , ĊĠĠĠ ĠPerformance Provider , ĊĠĠĠ ĠI mit ate Flag Provider Ġ{ ĊĊĠĠĠ Ġprotected Ġval Ġtag Ġ= Ġ" UIT est Runner " ĊĊĠĠĠ Ġprotected Ġval Ġs entry Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate S entry ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs entry D sn Ġ= Ġtest Run Environment . as Run Environment OrThrow (). sentry D sn ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġtest Report Logger : ĠLogger Ġ= Ġobject Ġ: ĠLogger Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdebug ( msg : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Test Report ", Ġmsg ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġexception ( msg : ĠString , Ġerror : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Test Report ", Ġmsg , Ġerror ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcritical ( msg : ĠString , Ġerror : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Test Report ", Ġmsg , Ġerror ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs entry . send Exception ( error ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġperformance Test Reporter Ġ= ĠPerformance Test Reporter () ĊĊĠĠĠ Ġoverride Ġval Ġreport : ĠReport Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrun Environment Ġ= Ġtest Run Environment . as Run Environment OrThrow () ĊĠĠĠĠĠĠĠ Ġval Ġis Local Run Ġ= Ġrun Environment . team city Build Id Ġ== ĠTest Run Environment . LOCAL _ ST UDIO _ RUN _ ID ĊĠĠĠĠĠĠĠ Ġval Ġtransport : ĠList < Transport > Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Local Run Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( run Environment . report Config Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocal Run Transport ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreport Api Host Ġ= Ġrun Environment . report Config . report Api Url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreport Fallback Url Ġ= Ġrun Environment . report Config . report Api Fallback Url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreport Viewer Url Ġ= Ġrun Environment . report Config . report Viewer Url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreport Coordinates Ġ= Ġrun Environment . test Run Coordinates , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice Name Ġ= ĠDevice Name ( run Environment . device Name ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger Ġ= Ġtest Report Logger ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgson : ĠGson Ġ= ĠGson Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. register Type Adapter Factory ( Entry Type Adapter Factory ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( External Storage Transport ( gson )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠReport Implementation ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs entry Ġ= Ġs entry , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile Storage Url Ġ= Ġrun Environment . file Storage Url , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Device Cache Directory Ġ= Ġrun Environment . output Directory , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠhttpClient Ġ= Ġreport HttpClient , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Incident Ġ= Ġ{ Ġtest Issues Monitor . on Failure ( it ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperformance Test Reporter Ġ= Ġperformance Test Reporter , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransport Ġ= Ġtransport , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger Ġ= Ġtest Report Logger ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġis I mit ate : ĠBoolean Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Run Environment . as Run Environment OrThrow (). is I mit ation ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġtest Run Environment : ĠTest Run Environment Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate Runner Environment ( instrumentation Arguments ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġreport Viewer Http Interceptor : ĠReport Viewer Http Interceptor Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrun Environment Ġ= Ġtest Run Environment . as Run Environment OrThrow () ĊĠĠĠĠĠĠĠ ĠReport Viewer Http Interceptor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreport Provider Ġ= Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremote File Storage Endpoint Host Ġ= ĠHttp Url . get ( run Environment . file Storage Url ). host () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġreport Viewer Websocket Reporter : ĠReport Viewer Websocket Reporter Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠReport Viewer Websocket Reporter ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġmock WebServer : ĠMock WebServer Ġby Ġlazy Ġ{ ĠMock WebServer () Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Log Not Tim ber ") ĊĠĠĠ Ġval Ġmock Dispatcher Ġ= ĠMock Dispatcher ( logger Ġ= Ġ{ ĠLog . d (" MOCK _ WEB _ SERVER ", Ġit ) Ġ}) ĊĊĠĠĠ Ġprotected Ġopen Ġval Ġtest Issues Monitor : ĠTest Issues Monitor Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠComposite Test Issues Monitor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs entry Ġ= Ġs entry , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Run Environment Ġ= Ġtest Run Environment . as Run Environment OrThrow (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog Tag Ġ= Ġtag ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġinstrument ation Arguments : ĠBundle ĊĊĠĠĠ Ġprivate Ġval Ġsystem Dialog s Manager : ĠSystem Dialog s Manager Ġby Ġlazy Ġ{ ĠSystem Dialog s Manager ( report ) Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġreport HttpClient : ĠOk HttpClient Ġby Ġlazy Ġ{ Ġcreate Report HttpClient () Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġcreate Runner Environment ( arguments : ĠBundle ): ĠTest Run Environment ĊĊĠĠĠ Ġprotected Ġabstract Ġval Ġmetadata To Bundle Injector : ĠTest Metadata Injector ĊĊĠĠĠ Ġprivate Ġfun Ġinject Test Metadata ( arguments : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġis Real Run Ġ= Ġ! arguments . containsKey ( FA KE _ OR CHE STR ATOR _ RUN _ ARGUMENT ) ĊĠĠĠĠĠĠĠ Ġif Ġ( is Real Run ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmetadata To Bundle Injector . inject ( arguments ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġopen Ġfun Ġbefore Application Created ( ĊĠĠĠĠĠĠĠ Ġrun Environment : ĠTest Run Environment . Run Environment , ĊĠĠĠĠĠĠĠ Ġbundle With Test Annotation Values : ĠBundle ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWARNING : ĠCan 't Ġcrash Ġin Ġthis Ġmethod . ĊĠĠĠĠ Ġ* ĠOtherwise Ġwe Ġcan 't Ġpass Ġan Ġerror Ġto Ġthe Ġreport ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress Lint (" Log Not Tim ber ") ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( arguments : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinstrument ation Arguments Ġ= Ġarguments ĊĠĠĠĠĠĠĠ Ġinject Test Metadata ( arguments ) ĊĊĠĠĠĠĠĠĠ ĠLog . d ( tag , Ġ" Instrumentation Ġarguments : Ġ$ instrumentation Arguments ") ĊĠĠĠĠĠĠĠ ĠLog . d ( tag , Ġ" Test Run Environment : Ġ$ test Run Environment ") ĊĊĠĠĠĠĠĠĠ Ġtest Run Environment . execute If Real Run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Application Crash Handling () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Report Listener ( arguments ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit TestCase ( run Environment Ġ= Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Listeners ( run Environment Ġ= Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbefore Application Created ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Environment Ġ= Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbundle With Test Annotation Values Ġ= Ġarguments ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( arguments ) ĊĊĠĠĠĠĠĠĠ Ġtest Run Environment . execute If Real Run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠE sp ress o . set Failure Handler ( Report Friendly Failure Handler ( target Context )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit UIT est Config () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠDevice Settings Checker ( target Context ). check () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Run Environment . execute If Real Run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsystem Dialog s Manager . close System Dialog s () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĊĠĠĠĠĠĠĠ Ġtest Run Environment . execute If Real Run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate Environment ( run Environment Ġ= Ġit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Log Not Tim ber ") ĊĠĠĠ Ġoverride Ġfun Ġon Exception ( obj : ĠAny ?, Ġe : ĠThrowable ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . e ( tag , Ġ" Application Ġcrash Ġcaptured Ġby Ġon Exception Ġhandler Ġinside Ġinstrument ation ", Ġe ) ĊĊĠĠĠĠĠĠĠ Ġtest Run Environment . execute If Real Run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry To Report Unexpected Incident ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġincident Ġ= Ġe , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtag Ġ= Ġtag ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Exception ( obj , Ġe ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġopen Ġfun Ġinit UIT est Config () Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( UIT est Config ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwait er Timeout Ms Ġ= ĠTimeUnit . SECONDS . to Millis ( 1 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Launch Timeout Milliseconds Ġ= ĠTimeUnit . SECONDS . to Millis ( 1 5 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Intercept ors Ġ+= ĠHuman Readable Action Interceptor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreport . add Comment ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġassertion Intercept ors Ġ+= ĠHuman Readable Assertion Interceptor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreport . add Comment ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Wait er Retry Ġ= Ġ{ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Log Not Tim ber ") ĊĠĠĠ Ġfun Ġtry To Report Unexpected Incident ( incident : ĠThrowable , Ġtag : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreport . register Incident ( App Crash Exception ( incident )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreport . report TestCase () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( tag , Ġ" Error Ġduring Ġreporting Ġtest Ġafter Ġglobal Ġexception Ġhandling ", Ġt ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐľ Ñĭ ĠÐ¿ÐµÑĢ ÐµÑħ Ð² Ð°ÑĤ ÑĭÐ² Ð°ÐµÐ¼ ĠÐ²ÑģÐµ ĠÐ¿ Ð°Ð´ ÐµÐ½Ð¸Ñı ĠÐ¿ÑĢÐ¸Ð»Ð¾Ð¶ ÐµÐ½Ð¸Ñı ĠÑĤ ÑĥÑĤ ĠÑģ ĠÐ¿Ð¾Ð¼Ð¾ÑīÑĮÑİ ĠÐ³ Ð» Ð¾Ð± Ð°Ð»ÑĮ Ð½Ð¾Ð³Ð¾ ĠÑħ Ñį Ð½ Ð´ Ð» ÐµÑĢÐ° . ĊĠĠĠĠ Ġ* ĠÐľ Ñĭ ĠÐ¸ÑģÐ¿Ð¾Ð»ÑĮÐ·Ñĥ ÐµÐ¼ ĠÑįÑĤ Ð¾ÑĤ ĠÐ¼ ÐµÑħ Ð°Ð½Ð¸ Ð· Ð¼ ĠÐ² Ð¼ ÐµÑģÑĤ Ðµ ĠÑģ Ġon Exception . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠÐķÑģÐ»Ð¸ ĠÐ¿ÑĢÐ¾ Ð¸Ñģ ÑħÐ¾Ð´ Ð¸ÑĤ ĠÐ¿ Ð°Ð´ ÐµÐ½Ð¸Ðµ ĠÐ² Ð½ ÑĥÑĤ ÑĢÐ¸ ĠÐ¿ÑĢÐ¸Ð»Ð¾Ð¶ ÐµÐ½Ð¸Ñı ĠÐ² ĠÐ´ÑĢÑĥÐ³ Ð¾Ð¼ ĠÑĤ ÑĢÐµÐ´ Ðµ Ġ( Ð½ Ð°Ð¿ ÑĢ Ð¸Ð¼ÐµÑĢ ĠÐ² ĠIO ), ĠÑĤÐ¾ ĠÑģ ÑĢÐ°Ð ± Ð°ÑĤ ÑĭÐ² Ð°ÐµÑĤ ĊĠĠĠĠ Ġ* ĠÐ³ Ð» Ð¾Ð± Ð°Ð»ÑĮ Ð½ÑĭÐ¹ ĠÐ¾Ð± ÑĢÐ°Ð±Ð¾ÑĤ Ñĩ Ð¸Ðº ĠÐ¾ÑĪÐ¸Ð± Ð¾Ðº ĠÐ¸ ĠÐº ÑĢÐ° ÑĪ Ð¸ÑĤ ĠÐ¿ÑĢÐ¸Ð»Ð¾Ð¶ ÐµÐ½Ð¸Ðµ ĠÐ² Ð½ ÑĥÑĤ ÑĢÐ¸ ĠAndroid ĠRuntime . ĠÐŃ ÑĤÐ¾ ĠÐ¿ Ð°Ð´ ÐµÐ½Ð¸Ðµ ĊĠĠĠĠ Ġ* Ġinstrument ation ĠÐ½Ðµ ĠÐ¿ÐµÑĢ ÐµÑħ Ð² Ð°ÑĤ ÑĭÐ² Ð°ÐµÑĤ . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠÐ¡ ÐµÐ¹ Ñĩ Ð°Ñģ ĠÐ·Ð° ĠÐ¾Ð± ÑĢÐ°Ð±Ð¾ÑĤ ÐºÑĥ ĠÐ²ÑģÐµ Ñħ ĠÐ¿ Ð°Ð´ ÐµÐ½Ð¸Ð¹ ĠÐ¿ÑĢÐ¸Ð»Ð¾Ð¶ ÐµÐ½Ð¸Ñı ĠÐ² Ġmain Thread ĠÐ¸ ĠÐ² Ð½ ÑĥÑĤ ÑĢÐ¸ Ġinstrument ation ĠÐºÐ¾Ð» Ð± ÐµÐº Ð¾Ð² ĊĠĠĠĠ Ġ* ĠÐ¾ÑĤ Ð² ÐµÑĩ Ð°ÐµÑĤ Ġon Exception . ĠÐĴ Ñģ Ðµ ĠÐ¾ ÑģÑĤ Ð°Ð»ÑĮ Ð½Ð¾Ðµ Ġ( Ð½ Ð°Ð¿ ÑĢ Ð¸Ð¼ÐµÑĢ , ĠÐ¿ Ð°Ð´ ÐµÐ½Ð¸Ðµ ĠÐ² ĠÐ¾ÑĤ Ð´ ÐµÐ»ÑĮ Ð½Ð¾Ð¼ ĠÑĤ ÑĢÐµÐ´ Ðµ ) ĠÐ¼Ñĭ ĠÐ¿ÐµÑĢ ÐµÑħ Ð² Ð°ÑĤ ÑĭÐ² Ð°ÐµÐ¼ ĠÐ² ĊĠĠĠĠ Ġ* ĠÐ³ Ð» Ð¾Ð± Ð°Ð»ÑĮ Ð½Ð¾Ð¼ ĠÐ¾Ð± ÑĢÐ°Ð±Ð¾ÑĤ Ñĩ Ð¸Ðº Ðµ . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġinit Application Crash Handling () Ġ{ ĊĠĠĠĠĠĠĠ ĠThread . setDefault Un caught ExceptionHandler ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠReport Un caught Handler () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalidate Environment ( run Environment : ĠTest Run Environment . Run Environment ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// todo Ġvalidate ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit TestCase ( run Environment : ĠTest Run Environment . Run Environment ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreport . init TestCase ( test Metadata Ġ= Ġrun Environment . test Metadata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Listeners ( run Environment : ĠTest Run Environment . Run Environment ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTest Lifecycle Notifier . addListener ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVideo Capture Test Listener ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Feature Value Ġ= Ġrun Environment . video Recording Feature , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Device Cache Directory Ġ= Ġrun Environment . output Directory , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhttpClient Ġ= Ġreport HttpClient , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshould Record Ġ= Ġshould Record Video ( run Environment . test Metadata ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Storage Url Ġ= Ġrun Environment . file Storage Url ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshould Record Video ( test Metadata : ĠTest Metadata ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( test Metadata . kind ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKind . UI _ COMPONENT , ĠKind . E 2 E Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Report Listener ( arguments : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġarguments . putString (" listener ", ĠReport Test Listener :: class . java . name ) ĊĠĠĠĠĠĠĠ Ġarguments . putString (" new Run Listener Mode ", Ġ" true ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinstance : ĠIn House Instrumentation TestRunner Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInstrument ation Registry . get Instrumentation () Ġas ĠIn House Instrumentation TestRunner ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ