package Ġcom . github . old _ horizon . selenium Ċ Ċ import Ġcom . code bor ne . se len ide . Condition . exact Text Ċ import Ġcom . code bor ne . se len ide . Sel en ide Ċ import Ġcom . code bor ne . se len ide . Sel en ide .` $$ ` Ċ import Ġcom . code bor ne . se len ide . WebDriver Runner Ċ import Ġcom . google . common . html . Html Esc apers Ċ import Ġcom . thought works . gauge .* Ċ import Ġorg . am sh ove . k lu ent . shouldBe Ċ import Ġorg . am sh ove . k lu ent . shouldBe EqualTo Ċ import Ġorg . openqa . selenium . logging . Log Type Ċ import Ġjava . net . URL Encoder Ċ import Ġjava . nio . charset . StandardCharsets Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ class ĠSteps Ġ{ ĊĠĠĠ Ġprivate Ġval Ġprops Ġ= Ġload Properties () ĊĠĠĠ Ġprivate Ġval Ġwebsite Ġ= ĠWebsite ( props . getProperty (" website . port "). toInt ()) ĊĠĠĠ Ġprivate Ġval Ġdownload Dir Ġ= Ġlazy Ġ{ ĠDownload Directory . of ( WebDriver Runner . driver ()) Ġ} ĊĊĠĠĠ Ġ@ Before Suite ĊĠĠĠ Ġfun Ġbefore Suite () Ġ{ ĊĠĠĠĠĠĠĠ Ġload Properties () ĊĠĠĠĠĠĠĠ Ġwebsite . setup () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After Suite ĊĠĠĠ Ġfun Ġafter Suite () Ġ{ ĊĠĠĠĠĠĠĠ Ġwebsite . te ar Down () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Before Scenario ĊĠĠĠ Ġfun Ġdisplay Scenario Name ( context : ĠExecutionContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< html > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< head > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< meta Ġcharset =" utf - 8 "/> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ</ head > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< h 2 >${ context . current Specification . name } < h 2 > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< h 1 >${ context . current Scenario . name }</ h 1 > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ</ html > ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent (). replace ("\ n ", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ ĠURL Encoder . encode ( it , ĠStandard Charsets . UTF _ 8 ). replace ("+ ", Ġ"% 2 0 ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ Ġ" data : text / html ,$ it " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ ĠSelen ide . open ( it ) Ġ} ĊĠĠĠĠĠĠĠ ĠTimeUnit . MILLISECONDS . sleep ( 5 0 0 ) ĊĠĠĠĠĠĠĠ ĠSelen ide . back () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After Scenario ĊĠĠĠ Ġfun Ġscenario Failed ( context : ĠExecutionContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( context . current Scenario . is Fail ing Ġ&& ĠWebDriver Runner . has WebDriver Started ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG auge . write Message (" WebDriver Ġsession Ġid : Ġ${ WebDriver Runner . driver (). sessionId }") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG auge . write Message (" Page Ġurl : Ġ${ WebDriver Runner . url () }") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG auge . write Message (" Page Ġsource : Ġ\ n ${ Html Esc apers . html Esc aper (). escape ( WebDriver Runner . source ()) }") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG auge . write Message (" Browser Ġlogs : Ġ\ n ${ Sel en ide . get WebDriver Logs ( Log Type . BROWSER ). join ToString ("\ n ") }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Before Scenario ĊĠĠĠ Ġ@ After Scenario ĊĠĠĠ Ġfun Ġclean Download Directory () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( download Dir . isInitialized ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdownload Dir . value . delete Files () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Step (" Navigate Ġto Ġ< path >") ĊĠĠĠ Ġfun Ġnavigate ( path : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠSelen ide . open ( path ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Step (" Click Ġ< name > Ġlink ") ĊĠĠĠ Ġfun Ġclick Link ( name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ` $$ ` (" a "). find ( exact Text ( name )). click () ĊĠĠĠĠĠĠĠ ĠTimeUnit . SECONDS . sleep ( 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Step (" File Ġ< name > Ġhas Ġdownloaded ") ĊĠĠĠ Ġfun Ġhas Downloaded ( name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdownload Dir . value . exists ( name ) ĠshouldBe Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Step (" Content Ġof Ġdownloaded Ġ< actual > Ġequals Ġto Ġ< expected >") ĊĠĠĠ Ġfun Ġcontent Equals ( actual : ĠString , Ġexpected : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdownload Dir . value . inputStream ( actual ). read All Bytes () ĠshouldBe EqualTo ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġread ( expected ). read All Bytes () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Properties (): ĠProperties Ġ{ ĊĠĠĠĠĠĠĠ Ġread (" u at . properties "). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprops Ġ= ĠProperties (). apply Ġ{ Ġload ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprops . forEach Ġ{ ĠSystem . setProperty ( it . key Ġas ĠString , Ġit . value Ġas ĠString ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġprops ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġread ( name : ĠString ) Ġ= Ġjava Class . class Loader . getResource AsStream ( name ) !! Ċ }