package Ġorg . wikipedia . main Ċ Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Build Ċ import Ġandroidx . recyclerview . widget . RecyclerView . ViewHolder Ċ import Ġandroidx . test . espress o . Esp ress o . on View Ċ import Ġandroidx . test . espress o . Esp ress o . press Back Ċ import Ġandroidx . test . espress o . Id ling Policies Ċ import Ġandroidx . test . espress o . action . View Actions .* Ċ import Ġandroidx . test . espress o . assertion . View Assertions . matches Ċ import Ġandroidx . test . espress o . contrib . RecyclerView Actions . action On Item At Position Ċ import Ġandroidx . test . espress o . matcher . View Matchers .* Ċ import Ġandroidx . test . espress o . web . assertion . WebView Assertions Ċ import Ġandroidx . test . espress o . web . s ugar . Web . on WebView Ċ import Ġandroidx . test . espress o . web . webdriver . Driver Atoms Ċ import Ġandroidx . test . espress o . web . webdriver . Driver Atoms . findElement Ċ import Ġandroidx . test . espress o . web . webdriver . Driver Atoms . web Click Ċ import Ġandroidx . test . espress o . web . webdriver . Locator Ċ import Ġandroidx . test . ext . junit . rules . Activity Scenario Rule Ċ import Ġandroidx . test . ext . junit . runners . Android JUnit 4 Ċ import Ġandroidx . test . filters . Large Test Ċ import Ġandroidx . test . platform . app . Instrumentation Registry Ċ import Ġandroidx . test . uia utom ator . Ui Device Ċ import Ġorg . hamcrest . Matchers .` is ` Ċ import Ġorg . hamcrest . Matchers . all Of Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . wikipedia . R Ċ import Ġorg . wikipedia . TestUtil Ċ import Ġorg . wikipedia . auth . Account Util Ċ import Ġorg . wikipedia . nav tab . Nav Tab Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ @ Large Test Ċ @ RunWith ( Android JUnit 4 :: class ) Ċ class ĠS moke Tests Ġ{ ĊĊĠĠĠ Ġ@ Rule ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġvar Ġm Activity Test Rule Ġ= ĠActivity Scenario Rule ( MainActivity :: class . java ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmain Activity Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdevice Ġ= ĠUi Device . getInstance ( Instrumentation Registry . get Instrumentation ()) ĊĠĠĠĠĠĠĠ Ġval Ġscreen Width Ġ= Ġdevice . display Width ĊĠĠĠĠĠĠĠ Ġval Ġscreen Height Ġ= Ġdevice . display Height ĊĊĠĠĠĠĠĠĠ ĠId ling Policies . set Master Policy Timeout ( 2 0 , ĠTimeUnit . SECONDS ) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠFlip Ġthrough Ġthe Ġinitial Ġon boarding Ġscreens ... ĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Id ( R . id . fragment _ on boarding _ forward _ button ), Ġis Displayed ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( click ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Id ( R . id . fragment _ on boarding _ forward _ button ), Ġis Displayed ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( click ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Id ( R . id . fragment _ on boarding _ forward _ button ), Ġis Displayed ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( click ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠMake Ġsure Ġthe Ġuser Ġsees Ġthe Ġusage Ġdata Ġopt - in Ġswitch ĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Id ( R . id . switch View ), Ġwith Text (" Send Ġusage Ġdata "), Ġis Displayed ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. check ( matches ( is Displayed ())) ĊĊĠĠĠĠĠĠĠ Ġ// ĠDis miss Ġinitial Ġon boarding ĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Id ( R . id . fragment _ on boarding _ done _ button ), Ġwith Text (" Get Ġstarted "), Ġis Displayed ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( click ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠDis miss Ġthe ĠFeed Ġcustomization Ġon boarding Ġcard Ġin Ġthe Ġfeed ĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Id ( R . id . view _ announcement _ action _ negative ), Ġwith Text (" Got Ġit "), Ġis Displayed ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( click ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠClick Ġthe ĠSearch Ġbox ĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Id ( R . id . search _ container ), Ġis Displayed ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( click ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠType Ġin Ġour Ġsearch Ġterm ĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Id ( R . id . search _ src _ text ), Ġis Displayed ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( replace Text ( SEARCH _ TERM ), Ġclose Soft Keyboard ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠGive Ġthe ĠAPI Ġpl enty Ġof Ġtime Ġto Ġreturn Ġresults ĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 5 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠMake Ġsure Ġone Ġof Ġthe Ġresults Ġmatches Ġthe Ġtitle Ġthat Ġwe Ġexpect ĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Id ( R . id . page _ list _ item _ title ), Ġwith Text ( ARTIC LE _ TITLE ), Ġis Displayed ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. check ( matches ( with Text ( ARTIC LE _ TITLE ))) ĊĊĠĠĠĠĠĠĠ Ġ// ĠRotate Ġthe Ġdevice ĊĠĠĠĠĠĠĠ Ġdevice . set Orientation Right () ĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠMake Ġthe Ġkeyboard Ġdis appear ĊĠĠĠĠĠĠĠ Ġpress Back () ĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠMake Ġsure Ġthe Ġsame Ġtitle Ġappears Ġin Ġthe Ġnew Ġscreen Ġorientation ĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Id ( R . id . page _ list _ item _ title ), Ġwith Text ( ARTIC LE _ TITLE ), Ġis Displayed ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. check ( matches ( with Text ( ARTIC LE _ TITLE ))) ĊĊĠĠĠĠĠĠĠ Ġ// ĠRotate Ġthe Ġdevice Ġback Ġto Ġthe Ġoriginal Ġorientation ĊĠĠĠĠĠĠĠ Ġdevice . set Orientation Natural () ĊĠĠĠĠĠĠĠ Ġdevice . un freeze Rotation () ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠClick Ġon Ġthe Ġfirst Ġsearch Ġresult ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . search _ results _ list )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( action On Item At Position < ViewHolder >( 0 , Ġclick ())) ĊĊĠĠĠĠĠĠĠ Ġ// ĠGive Ġthe Ġpage Ġpl enty Ġof Ġtime Ġto Ġload Ġfully ĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 5 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠClick Ġon Ġa Ġlink Ġto Ġload Ġa ĠLink ĠPreview Ġdialog ĊĠĠĠĠĠĠĠ Ġon WebView (). with Element ( findElement ( Locator . CSS _ SELECT OR , Ġ" a [ title =' 3 - sphere '] ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( web Click ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 3 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠClick Ġthrough Ġthe Ġpreview Ġto Ġload Ġa Ġnew Ġarticle ĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Id ( R . id . link _ preview _ toolbar ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( click ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 3 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠClick Ġon Ġanother Ġlink ĊĠĠĠĠĠĠĠ Ġon WebView (). with Element ( findElement ( Locator . CSS _ SELECT OR , Ġ" a [ title =' Sphere '] ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( web Click ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 3 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠOpen Ġit Ġin Ġa Ġnew Ġtab ĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Id ( R . id . link _ preview _ secondary _ button ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( click ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠEnsure Ġthat Ġthere Ġare Ġnow Ġtwo Ġtabs ĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Id ( R . id . tabs Count Text ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. check ( matches ( with Text (" 2 "))) ĊĊĠĠĠĠĠĠĠ Ġ// ĠGo Ġback Ġto Ġthe Ġoriginal Ġarticle ĊĠĠĠĠĠĠĠ Ġpress Back () ĊĊĠĠĠĠĠĠĠ Ġ// ĠEnsure Ġthe Ġheader Ġview Ġ( with Ġlead Ġimage ) Ġis Ġdisplayed ĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Id ( R . id . page _ header _ view ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. check ( matches ( is Displayed ())) ĊĊĠĠĠĠĠĠĠ Ġ// ĠClick Ġon Ġthe Ġlead Ġimage Ġto Ġlaunch Ġthe Ġfull - screen Ġgallery ĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Id ( R . id . view _ page _ header _ image ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( click ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 3 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠFlip Ġthrough Ġthe Ġgallery Ġa Ġcouple Ġof Ġtimes ĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Id ( R . id . pager ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( swipe Left ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 2 ) ĊĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Id ( R . id . pager ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( swipe Left ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠGo Ġback Ġto Ġthe Ġarticle ĊĠĠĠĠĠĠĠ Ġpress Back () ĊĊĠĠĠĠĠĠĠ Ġon WebView (). force Javascript Enabled () ĊĊĠĠĠĠĠĠĠ Ġ// ĠEnsure Ġthe Ġarticle Ġtitle Ġmatches Ġwhat Ġwe Ġexpect ĊĠĠĠĠĠĠĠ Ġon WebView (). with Element ( findElement ( Locator . CSS _ SELECT OR , Ġ" h 1 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. check ( WebView Assertions . web Matches ( Driver Atoms . getText (), Ġ` is `( ARTIC LE _ TITLE ))) ĊĊĠĠĠĠĠĠĠ Ġ// ĠRotate Ġthe Ġdisplay Ġto Ġlandscape ĊĠĠĠĠĠĠĠ Ġdevice . set Orientation Right () ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠMake Ġsure Ġthe Ġheader Ġview Ġ( with Ġlead Ġimage ) Ġis Ġnot Ġshown Ġin Ġlandscape Ġmode ĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Id ( R . id . page _ header _ view ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. check ( matches ( TestUtil . isNot Visible ())) ĊĊĠĠĠĠĠĠĠ Ġ// ĠMake Ġsure Ġthe Ġarticle Ġtitle Ġstill Ġmatches Ġwhat Ġwe Ġexpect ĊĠĠĠĠĠĠĠ Ġon WebView (). with Element ( findElement ( Locator . CSS _ SELECT OR , Ġ" h 1 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. check ( WebView Assertions . web Matches ( Driver Atoms . getText (), Ġ` is `( ARTIC LE _ TITLE ))) ĊĊĠĠĠĠĠĠĠ Ġ// ĠRotate Ġthe Ġdevice Ġback Ġto Ġthe Ġoriginal Ġorientation ĊĠĠĠĠĠĠĠ Ġdevice . set Orientation Natural () ĊĠĠĠĠĠĠĠ Ġdevice . un freeze Rotation () ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠB ring Ġup Ġthe Ġtheme Ġcho oser Ġdialog ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . article _ menu _ font _ and _ theme )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( click ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠSwitch Ġoff Ġthe Ġ" match Ġsystem Ġtheme " Ġoption ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ< ĠBuild . VERSION _ CODES . Q ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . theme _ cho oser _ match _ system _ theme _ switch )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. check ( matches ( TestUtil . isNot Visible ())) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . theme _ cho oser _ match _ system _ theme _ switch )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( scrollTo (), Ġclick ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠTest Util . delay ( 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠSelect Ġthe ĠBlack Ġtheme ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . button _ theme _ black )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( scrollTo (), Ġclick ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 2 ) ĊĊĠĠĠĠĠĠĠ Ġpress Back () ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠMake Ġsure Ġthe Ġbackground Ġis Ġblack ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . page _ actions _ tab _ layout )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. check ( matches ( TestUtil . has BackgroundColor ( Color . BLACK ))) ĊĊĠĠĠĠĠĠĠ Ġ// ĠGo Ġback Ġto Ġthe ĠLight Ġtheme ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . article _ menu _ font _ and _ theme )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( click ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . button _ theme _ light )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( scrollTo (), Ġclick ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 2 ) ĊĊĠĠĠĠĠĠĠ Ġpress Back () ĊĊĠĠĠĠĠĠĠ Ġ// ĠClick Ġthe Ġedit Ġp encil Ġat Ġthe Ġtop Ġof Ġthe Ġarticle ĊĠĠĠĠĠĠĠ Ġon WebView (). with Element ( findElement ( Locator . CSS _ SELECT OR , Ġ" a [ data - id =' 0 ']. pcs - edit - section - link ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( web Click ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠClick Ġthe Ġ" edit Ġintroduction " Ġmenu Ġitem ĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Id ( R . id . title ), Ġwith Text (" Edit Ġintroduction "), Ġis Displayed ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( click ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠIncrease Ġtext Ġsize ĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Id ( R . id . menu _ edit _ zoom _ in ), Ġis Displayed ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( click ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠDec re ase Ġtext Ġsize ĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Id ( R . id . menu _ edit _ zoom _ out ), Ġis Displayed ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( click ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠType Ġin Ġsome Ġstuff Ġinto Ġthe Ġedit Ġwindow ĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Id ( R . id . edit _ section _ text ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( replace Text (" abc ")) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠPro ceed Ġto Ġedit Ġpreview ĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Id ( R . id . edit _ action bar _ button _ text ), Ġis Displayed ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( click ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠGive Ġsufficient Ġtime Ġfor Ġthe ĠAPI Ġto Ġload Ġthe Ġpreview ĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 5 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠClick Ġone Ġof Ġthe Ġdefault Ġedit Ġsummary Ġchoices ĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Text (" Fixed Ġtypo "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( scrollTo (), Ġclick ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠGo Ġback Ġout Ġof Ġthe Ġediting Ġworkflow ĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Content Description (" Navigate Ġup "), Ġis Displayed ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( click ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Content Description (" Navigate Ġup "), Ġis Displayed ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( click ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠChoose Ġto Ġremain Ġin Ġthe Ġediting Ġworkflow ĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Id ( android . R . id . button 2 ), Ġwith Text (" No "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( scrollTo (), Ġclick ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġpress Back () ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠChoose Ġto Ġleave Ġthe Ġediting Ġworkflow ĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Id ( android . R . id . button 1 ), Ġwith Text (" Yes "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( scrollTo (), Ġclick ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠClick Ġon Ġthe ĠTabs Ġbutton Ġto Ġlaunch Ġthe Ġtabs Ġscreen ĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Id ( R . id . page _ toolbar _ button _ tabs ), Ġis Displayed ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( click ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġa Ġnew Ġtab Ġ( which Ġshould Ġload Ġthe ĠMain ĠPage ) ĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Content Description (" New Ġtab "), Ġis Displayed ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( click ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 5 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠOpen Ġthe ĠTabs Ġscreen Ġagain ĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Id ( R . id . page _ toolbar _ button _ tabs ), Ġis Displayed ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( click ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠClick Ġon Ġthe Ġprevious Ġtab Ġin Ġthe Ġlist ĊĠĠĠĠĠĠĠ Ġdevice . click ( screen Width Ġ/ Ġ 2 , Ġscreen Height Ġ* Ġ 5 0 Ġ/ Ġ 1 0 0 ) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠSw ipe Ġdown Ġon Ġthe ĠWebView Ġto Ġreload Ġthe Ġcontents ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . page _ contents _ container )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( TestUtil . swipe Down WebView ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 5 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠEnsure Ġthat Ġthe Ġtitle Ġin Ġthe ĠWebView Ġis Ġstill Ġwhat Ġwe Ġexpect ĊĠĠĠĠĠĠĠ Ġon WebView (). with Element ( findElement ( Locator . CSS _ SELECT OR , Ġ" h 1 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. check ( WebView Assertions . web Matches ( Driver Atoms . getText (), Ġ` is `( ARTIC LE _ TITLE ))) ĊĊĠĠĠĠĠĠĠ Ġ// ĠSw ipe Ġleft Ġto Ġshow Ġthe Ġtable Ġof Ġcontents ĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Id ( R . id . page _ web _ view ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( swipe Left ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠMake Ġsure Ġthe Ġtop most Ġitem Ġin Ġthe Ġtable Ġof Ġcontents Ġis Ġthe Ġarticle Ġtitle ĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Id ( R . id . page _ toc _ item _ text ), Ġwith Text ( ARTIC LE _ TITLE ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. check ( matches ( is Displayed ())) ĊĊĠĠĠĠĠĠĠ Ġ// ĠSw ipe Ġthe Ġtable Ġof Ġcontents Ġto Ġgo Ġall Ġthe Ġway Ġto Ġthe Ġbottom ĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Id ( R . id . toc _ list ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( swipe Up ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠSelect Ġthe Ġ" About Ġthis Ġarticle " Ġitem ĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Id ( R . id . page _ toc _ item _ text ), Ġwith Text (" About Ġthis Ġarticle "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( click ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠGo Ġto Ġthe ĠTalk Ġpage Ġfor Ġthis Ġarticle ĊĠĠĠĠĠĠĠ Ġon WebView (). with Element ( findElement ( Locator . CSS _ SELECT OR , Ġ" a [ title =' View Ġtalk Ġpage '] ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( web Click ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 4 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠClick Ġon Ġthe Ġsecond Ġtopic Ġof Ġthe Ġtalk Ġpage ĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Id ( R . id . topic Title Text ), Ġwith Text ( T AL K _ TOPIC _ TITLE ), Ġis Displayed ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. check ( matches ( with Text ( T AL K _ TOPIC _ TITLE ))) ĊĊĠĠĠĠĠĠĠ Ġ// ĠClick Ġon Ġthe Ġ 3 rd Ġtopic ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . talk RecyclerView )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( action On Item At Position < ViewHolder >( 2 , Ġclick ())) ĊĊĠĠĠĠĠĠĠ Ġ// ĠGive Ġthe Ġpage Ġpl enty Ġof Ġtime Ġto Ġload Ġfully ĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 5 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠGo Ġback Ġout Ġof Ġthe ĠTalk Ġinterface ĊĠĠĠĠĠĠĠ Ġpress Back () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Account Util . is LoggedIn ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠClick Ġon Ġthe Ġ 5 th Ġtopic ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . menu _ notifications )). perform ( click ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGive Ġthe Ġpage Ġpl enty Ġof Ġtime Ġto Ġload Ġfully ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTest Util . delay ( 5 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠClick Ġon Ġthe Ġsearch Ġbar ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . notifications _ recycler _ view )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( action On Item At Position < ViewHolder >( 0 , Ġclick ())) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMake Ġthe Ġkeyboard Ġdis appear ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpress Back () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTest Util . delay ( 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġout Ġof Ġsearch Ġaction Ġmode ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpress Back () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠTest Util . delay ( 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGo Ġback Ġout Ġof Ġnotification ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpress Back () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠGo Ġback Ġout Ġof Ġthe Ġarticle Ġpage ĊĠĠĠĠĠĠĠ Ġpress Back () ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġupdate Ġthe Ġfollowing Ġactions Ġwhen Ġthe Ġcustom izable Ġtoolbar Ġfeature Ġis Ġreleased ĊĠĠĠĠĠĠĠ Ġ// ĠClick Ġon Ġthe ĠSave Ġbutton Ġto Ġadd Ġarticle Ġto Ġreading Ġlist ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . article _ menu _ bookmark )). perform ( click ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠClick Ġanywhere Ġto Ġshow Ġthe Ġtoolbar ĊĠĠĠĠĠĠĠ Ġdevice . click ( screen Width Ġ/ Ġ 2 , Ġscreen Height Ġ* Ġ 1 0 Ġ/ Ġ 1 0 0 ) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . page _ toolbar _ button _ show _ overflow _ menu )). perform ( click ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġon View ( with Text (" Explore ")). perform ( click ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠGo Ġto ĠSaved Ġtab ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( Nav Tab . READ ING _ LIST S . id ())). perform ( click ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠClick Ġon Ġfirst Ġitem Ġin Ġthe Ġlist ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . recycler _ view )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( action On Item At Position < ViewHolder >( 0 , Ġclick ())) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWaiting Ġfor Ġthe Ġarticle Ġto Ġbe Ġsaved Ġto Ġthe Ġdatabase ĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 5 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠMake Ġsure Ġone Ġof Ġthe Ġlist Ġitem Ġmatches Ġthe Ġtitle Ġthat Ġwe Ġexpect ĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Id ( R . id . page _ list _ item _ title ), Ġwith Text ( ARTIC LE _ TITLE ), Ġis Displayed ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. check ( matches ( with Text ( ARTIC LE _ TITLE ))) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTurn Ġdevice Ġto Ġoffline ĊĠĠĠĠĠĠĠ ĠTest Util . set Air plane Mode ( true ) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 2 ) ĊĊĠĠĠĠĠĠĠ Ġon View ( all Of ( with Id ( R . id . page _ list _ item _ title ), Ġwith Text ( ARTIC LE _ TITLE ), Ġis Displayed ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( click ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 5 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠClick Ġon Ġbookmark Ġicon Ġand Ġopen Ġthe Ġmenu ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . article _ menu _ bookmark )). perform ( click ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠRemove Ġarticle Ġfrom Ġreading Ġlist ĊĠĠĠĠĠĠĠ Ġon View ( with Text (" Remove Ġfrom ĠSaved ")). perform ( click ()) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTurn Ġdevice Ġto Ġoffline ĊĠĠĠĠĠĠĠ ĠTest Util . set Air plane Mode ( false ) ĊĊĠĠĠĠĠĠĠ ĠTest Util . delay ( 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠSEARCH _ TERM Ġ= Ġ" hop f Ġfi br ation " ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠA RT IC LE _ TITLE Ġ= Ġ" Hop f Ġfi br ation " ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠT AL K _ TOPIC _ TITLE Ġ= Ġ" natural Ġmetric ?" ĊĠĠĠ Ġ} Ċ } Ċ