/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 ĠNew ĠVector ĠLtd Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġim . vector . app . ui . robot Ċ Ċ import Ġandroid . view . View Ċ import Ġandroidx . test . espress o . Esp ress o . press Back Ċ import Ġandroidx . test . espress o . matcher . View Matchers Ċ import Ġandroidx . test . espress o . matcher . View Matchers . with Id Ċ import Ġcom . ade vint a . android . bar ista . assertion . Bar ista Visibility Assertions . assert Displayed Ċ import Ġcom . ade vint a . android . bar ista . interaction . Bar ista Click Interactions . click On Ċ import Ġcom . ade vint a . android . bar ista . interaction . Bar ista Dialog Interactions . click Dialog Negative Button Ċ import Ġcom . ade vint a . android . bar ista . interaction . Bar ista Dialog Interactions . click Dialog Positive Button Ċ import Ġcom . ade vint a . android . bar ista . interaction . Bar ista Drawer Interactions . open Drawer Ċ import Ġim . vector . app . Esp ress o Helper Ċ import Ġim . vector . app . R Ċ import Ġim . vector . app . espress o . tools . wait Until Activity Visible Ċ import Ġim . vector . app . espress o . tools . wait Until View Visible Ċ import Ġim . vector . app . features . created irect . Create Direct Room Activity Ċ import Ġim . vector . app . features . home . Home Activity Ċ import Ġim . vector . app . features . login . Login Activity Ċ import Ġim . vector . app . initial Sync Id ling Resource Ċ import Ġim . vector . app . ui . robot . settings . Settings Robot Ċ import Ġim . vector . app . with Id ling Resource Ċ import Ġtim ber . log . Tim ber Ċ Ċ class ĠElement Robot Ġ{ ĊĊĠĠĠ Ġfun Ġsign Up ( userId : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġon boarding Robot Ġ= ĠOn boarding Robot () ĊĠĠĠĠĠĠĠ Ġon boarding Robot . create Account ( userId Ġ= ĠuserId ) ĊĠĠĠĠĠĠĠ ĠwaitFor Home () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlogin ( userId : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġon boarding Robot Ġ= ĠOn boarding Robot () ĊĠĠĠĠĠĠĠ Ġon boarding Robot . login ( userId Ġ= ĠuserId ) ĊĠĠĠĠĠĠĠ ĠwaitFor Home () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠwaitFor Home () Ġ{ ĊĠĠĠĠĠĠĠ Ġwait Until Activity Visible < Home Activity > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwait Until View Visible ( with Id ( R . id . room List Container )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= ĠE sp ress o Helper . getCurrent Activity () !! ĊĠĠĠĠĠĠĠ Ġval Ġui Session Ġ= Ġ( activity Ġas ĠHome Activity ). active Session Holder . getActive Session () ĊĠĠĠĠĠĠĠ Ġwith Id ling Resource ( initial Sync Id ling Resource ( ui Session )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwait Until View Visible ( with Id ( R . id . bottom Navigation View )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsettings ( block : ĠSettings Robot . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġopen Drawer () ĊĠĠĠĠĠĠĠ Ġclick On ( R . id . home Drawer Header Settings View ) ĊĠĠĠĠĠĠĠ Ġblock ( Settings Robot ()) ĊĠĠĠĠĠĠĠ Ġpress Back () ĊĠĠĠĠĠĠĠ Ġwait Until View Visible ( with Id ( R . id . bottom Navigation View )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnew Direct Message ( block : ĠNew Direct Message Robot . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġclick On ( R . id . bottom _ action _ people ) ĊĠĠĠĠĠĠĠ Ġclick On ( R . id . create Chat Room Button ) ĊĠĠĠĠĠĠĠ Ġwait Until Activity Visible < Create Direct Room Activity > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwait Until View Visible ( with Id ( R . id . user List Search )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġclose Ġkeyboard ĊĠĠĠĠĠĠĠ Ġpress Back () ĊĠĠĠĠĠĠĠ Ġblock ( New Direct Message Robot ()) ĊĠĠĠĠĠĠĠ Ġpress Back () ĊĠĠĠĠĠĠĠ Ġwait Until View Visible ( with Id ( R . id . bottom Navigation View )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnew Room ( block : ĠNew Room Robot . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġclick On ( R . id . bottom _ action _ rooms ) ĊĠĠĠĠĠĠĠ ĠRoom List Robot (). new Room Ġ{ Ġblock () Ġ} ĊĠĠĠĠĠĠĠ Ġwait Until View Visible ( with Id ( R . id . bottom Navigation View )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġroom List ( block : ĠRoom List Robot . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġclick On ( R . id . bottom _ action _ rooms ) ĊĠĠĠĠĠĠĠ Ġblock ( Room List Robot ()) ĊĠĠĠĠĠĠĠ Ġwait Until View Visible ( with Id ( R . id . bottom Navigation View )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsign out ( expect Sign Out Warning : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġclick On ( R . id . group Toolbar Avatar ImageView ) ĊĠĠĠĠĠĠĠ Ġclick On ( R . id . home Drawer Header Sign out View ) ĊĊĠĠĠĠĠĠĠ Ġval Ġis Showing Sign Out Warning Ġ= Ġkotlin . run Catch ing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwait Until View Visible ( with Id ( R . id . exit Any way Button )) ĊĠĠĠĠĠĠĠ Ġ}. is Success ĊĊĠĠĠĠĠĠĠ Ġif Ġ( expect Sign Out Warning Ġ!= Ġis Showing Sign Out Warning ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . w (" Unexpected Ġsign Ġout Ġflow , Ġexpected Ġwarning Ġto Ġbe : Ġ${ expect Sign Out Warning . to Warning Type ()} Ġbut Ġwas Ġ${ is Showing Sign Out Warning . to Warning Type () }") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Showing Sign Out Warning ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġhave Ġsent Ġa Ġmessage Ġin Ġa Ġe 2 e Ġroom , Ġaccept Ġto Ġloose Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclick On ( R . id . exit Any way Button ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDark Ġpattern ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwait Until View Visible ( with Id ( android . R . id . button 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclick Dialog Negative Button () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwait Until View Visible ( with Id ( android . R . id . button 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclick Dialog Positive Button () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwait Until Activity Visible < Login Activity > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Displayed ( R . id . login Splash Logo ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdismiss Verification If Present () Ġ{ ĊĠĠĠĠĠĠĠ Ġkotlin . run Catch ing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 6 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= ĠE sp ress o Helper . getCurrent Activity () !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpopup Ġ= Ġactivity . findViewById < View >( com . tap ad oo . aler ter . R . id . ll Alert Background ) !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . run On Ui Thread Ġ{ Ġpopup . perform Click () Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwait Until View Visible ( with Id ( R . id . bottom Sheet Fragment Container )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwait Until View Visible ( View Matchers . with Text ( R . string . skip )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclick On ( R . string . skip ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Displayed ( R . string . are _ you _ sure ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclick On ( R . string . skip ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwait Until View Visible ( with Id ( R . id . bottom Sheet Fragment Container )) ĊĠĠĠĠĠĠĠ Ġ}. on Failure Ġ{ ĠTim ber . w (" Verification Ġpopup Ġmissing ", Ġit ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠBoolean . to Warning Type () Ġ= Ġif Ġ( this ) Ġ" shown " Ġelse Ġ" skipped " Ċ Ċ fun ĠElement Robot . with Developer Mode ( block : ĠElement Robot . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġsettings Ġ{ Ġtoggle Developer Mode () Ġ} ĊĠĠĠ Ġblock () ĊĠĠĠ Ġsettings Ġ{ Ġtoggle Developer Mode () Ġ} Ċ } Ċ