package Ġcom . example . test . benchmark Ċ Ċ import Ġandroidx . test . ext . junit . runners . Android JUnit 4 Ċ import Ġandroidx . test . platform . app . Instrumentation Registry Ċ import Ġandroidx . test . uia utom ator . By Ċ import Ġandroidx . test . uia utom ator . Ui Device Ċ import Ġandroidx . test . uia utom ator . Ui Selector Ċ import Ġandroidx . test . uia utom ator . Until Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith ĊĊ Ċ private Ġconst Ġval ĠTIME OUT Ġ= Ġ 1 0 _ 0 0 0 L Ċ Ċ private Ġconst Ġval ĠB EN CH MARK _ TIMEOUT Ġ= Ġ 1 5 Ġ* Ġ 6 0 Ġ* Ġ 1 0 0 0 L ĊĊ Ċ @ RunWith ( Android JUnit 4 :: class ) Ċ class ĠRun G eek bench Ġ{ ĊĊĠĠĠ Ġprivate Ġobject ĠText Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġsearch Ġ= Ġ" Search " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠappName Ġ= Ġ" G eek " ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġaccept Ġ= Ġ" ACCEPT " ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġbenchmark Type Ġ= Ġ" RUN ĠCPU ĠB EN CH MARK " ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġrunning Dialog Ġ= Ġ" G eek bench Ġ 5 " ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġresults Ġ= Ġ" Benchmark ĠResults " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrun () Ġ{ ĊĊĠĠĠĠĠĠĠ ĠUi Device . getInstance ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInstrument ation Registry . get Instrumentation () ĊĠĠĠĠĠĠĠ Ġ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠStart Ġfrom Ġthe Ġhome Ġscreen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpress Home () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOpen Ġapps Ġmenu Ġon Ġpixel Ġlauncher ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Object ( Ui Selector (). description Contains ( Text . search )). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswipe ( 0 , Ġvisible Bounds . center Y (), Ġ 0 , Ġ 0 , Ġ 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWait Ġfor Ġ 3 d Ġmark Ġlauncher Ġicon ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwait ( Until . has Object ( By . text Contains ( Text . appName )), ĠTIME OUT ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠwaitFor Idle ( 5 0 0 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠClick Ġ 3 d Ġmark Ġlauncher Ġicon ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Object ( Ui Selector (). text Contains ( Text . appName )). click () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠwaitFor Idle ( 5 0 0 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 0 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCheck Ġpermissions Ġdialog ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Object ( Ui Selector (). text ( Text . accept )). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( exists ()) Ġclick () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠwaitFor Idle ( 5 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 2 0 0 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠChoose Ġproper Ġbenchmark Ġscreen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Object ( Ui Selector (). text ( Text . benchmark Type )). click () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠwaitFor Idle ( 5 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 2 0 0 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWait Ġuntil Ġbenchmark Ġfinish ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwait ( Until . has Object ( By . text ( Text . running Dialog )), ĠTIME OUT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwait ( Until . g one ( By . text ( Text . running Dialog )), ĠB EN CH MARK _ TIMEOUT ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAssert Ġthat Ġbenchmark Ġresults Ġscreen Ġis Ġvisible ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwait ( Until . has Object ( By . text ( Text . results )), ĠTIME OUT ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMake Ġsure Ġthat Ġresults Ġwas Ġrecorded ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 5 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ