package Ġcom . kas per sky . kas press ample . fl aky _ tests Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroidx . test . rule . Activity Test Rule Ċ import Ġandroidx . test . rule . Grant Permission Rule Ċ import Ġcom . kas per sky . kas press ample . MainActivity Ċ import Ġcom . kas per sky . kas press ample . R Ċ import Ġcom . kas per sky . kas press ample . screen . Common Fl aky Screen Ċ import Ġcom . kas per sky . kas press ample . screen . Main Screen Ċ import Ġcom . kas per sky . kas press o . test cases . api . testcase . TestCase Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ Ċ class ĠCommon Fl aky Test Ġ: ĠTestCase () Ġ{ ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġruntime Permission Rule : ĠGrant Permission Rule Ġ= ĠGrant Permission Rule . grant ( ĊĠĠĠĠĠĠĠ ĠManifest . permission . WRITE _ EXTERNAL _ STORAGE , ĊĠĠĠĠĠĠĠ ĠManifest . permission . READ _ EXTERNAL _ STORAGE ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġactivity Test Rule Ġ= ĠActivity Test Rule ( MainActivity :: class . java , Ġtrue , Ġfalse ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest () Ġ{ ĊĠĠĠĠĠĠĠ Ġbefore Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Test Rule . launch Activity ( null ) ĊĠĠĠĠĠĠĠ Ġ}. after Ġ{ ĊĠĠĠĠĠĠĠ Ġ}. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstep (" Open ĠScroll ĠView ĠStub ĠScreen ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMain Screen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflaky Button Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġstep (" Check ĠScroll View Ġscreen Ġis Ġdisplayed ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Fl aky Screen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscroll View Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Displayed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġstep (" Check Ġbtn 5 's Ġtext ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Fl aky Screen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn 5 Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġautomate Ġflaky Ġsafety Ġhandling Ġis Ġin Ġaction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthe Ġtext Ġis Ġchanging Ġduring Ġ 3 Ġseconds ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthe Ġdefault Ġvalue Ġof Ġflaky Ġsafety Ġtimeout Ġ= Ġ 1 0 Ġseconds ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Text ( R . string . common _ fl aky _ final _ button ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġstep (" Check Ġtv 6 's Ġtext ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Fl aky Screen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv 6 Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhere , Ġthe Ġtext Ġwill Ġbe Ġchanging Ġlonger ( summary Ġ= Ġ 1 5 Ġseconds ) Ġthan ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠ Ġthe Ġdefault Ġvalue Ġof Ġflaky Ġsafety Ġtimeout ( 1 0 Ġseconds ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthat 's Ġwhy Ġwe Ġuse Ġflaky S af ely Ġmethod Ġobviously ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflaky S af ely ( timeout Ms Ġ= Ġ 1 6 _ 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Text ( R . string . common _ fl aky _ final _ text view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }