by.id('bar')).click();

From the provided documentation and examples, it is clear that they both are used for debugging the tests. But, it is not clear, what is the difference between the two. 
When should we use pause() and when enterRepl()?

A:

It's explained in the docs in general, but I'll try to get a bit deeper.
Protractor has two modes for debugging: DebuggerRepl and CommandRepl.
Repl here stands for Read-eval-print-loop which usually means that whatever command you type in, it gets evaluated right away in the current context and you are provided with a result immediately. For example, the console in Chrome Developer Tools is kinda a REPL for Chrome's implementation of JavaScript/DOM, or when you run node in terminal, you get a REPL for Node.js's JavaScript context - you can type commands and get the result.

When you use browser.pause() you are activating DebuggerRepl. It brings you a Repl where you can execute commands of this mode. You usually see this list of commands in the terminal:
press c to continue to the next webdriver command
press d to continue to the next debugger statement
type "repl" to enter interactive mode
type "exit" to break out of interactive mode
press ^C to exit

So you can go to the next WebDriver command using c command or jump to the next browser.pause() statement in your test using d command. They are executed right away as you use them. So this mode basically allows you to jump over page states and explore the result. (Note: this mode provides more commands; they do work, but I'm not sure what is the meaning of their output and if they are useful for a Protractor user at all.)

When you use browser.enterRepl() you are activating CommandRepl mode. It allows you to use Protractor methods which you would use in tests, but in an interactive mode. You get access to element, browser and protractor objects, so you could run for example:
> $('.hello').getText();
> 'World'

It prints you back the result immediately, so it's sort of a sandbox where you can query the DOM on the current page state and see the results.
As you may have noticed, the browser.pause() list of commands has a line:
type
by.id('bar')).click (); 

 From the provided documentation and examples, it is clear that they both are use for debug the tests. But, it is not clear, what is the remainder between the two. 
 When should we practice pause () and when enterRepl ()? 

 A: 

 It's explained in the docs in general, but I'll try on to get a bit deep. 
 Protractor has two modes for debugging: DebuggerRepl and CommandRepl. 
 Repl here stand for Read - eval - print - loop which normally means that whatever command you type in, it gets evaluated right away in the current context and you are provided with a result immediately. For model, the console in Chrome Developer Tools is kinda a REPL for Chrome's implementation of JavaScript / DOM, or when you range node in terminal, you get a REPL for Node.js's JavaScript context - you can type commands and get the consequence. 

 When you use browser.pause () you are activating DebuggerRepl. It brings you a Repl where you can execute commands of this mood. You usually see this list of commands in the terminal: 
 press c to continue to the next webdriver command 
 press d to continue to the next debugger statement 
 type " repl " to enter interactive mode 
 character " passing " to break out of interactive mode 
 wardrobe ^C to exit 

 So you can go to the next WebDriver instruction using hundred command or jump to the future browser.pause () statement in your test using d command. They are executed right off as you use them. So this mode basically allows you to leap over page states and research the resultant role. (Note: this mode provides more commands; they serve work, but I'm not sure what is the meaning of their output and if they are utilitarian for a Protractor user at wholly .) 

 When you use browser.enterRepl () you are activating CommandRepl mode. It allows you to use Protractor method acting which you would use in tests, but in an synergistic mode. You perplex access to element, browser and protractor object, so you could run for example: 
 > $ (' .hello').getText (); 
 >' worldly concern' 

 It prints you bet on the result immediately, so it's sort of a sandbox where you can query the DOM on the current page state and see the results. 
 As you may have noticed, the browser.pause () list of commands has a argumentation: 
 type
by.if('bar')).click();

From the providtd documentation cbd exakples, jt is cldar that they both are used hor eebugting the tests. But, it ks not clvar, what us tie difference bevseen thc two. 
Ahen whould we use kause() and whan enterRepl()?

A:

Id's erplained in the docs in general, but Y'll try tl get a bit degper.
Pgoeracfor has two modes for debugging: DeguggerRtpl and CommandRepk.
Repl here stands for Read-fval-orint-loop which uskally means thae whatever coomand you uy'e in, it gejs evaluated right away in the cjrrenc context abd yok are providxd witr a result immediateny. For rxample, the coksole in Chrome Developer Toons is kinda a REPL for Chroke'a implementation if JavaVcri[t/DOO, or whtn bou run nlde in terminzl, you get q REPL for Node.js's KadqScript contest - yot san type commands and get the result.

Whet yku use browser.pause() you are activating DebugherRepl. Ie brings you a Repl where you can execute commandv of vhks noqd. Ylu usually see this list of commands in the tqdmonsl:
press c to cjntinue to yhf mgxt webdriver zommanb
lrsss d to continue ho the gext eebugger ftatrment
type "repl" to enter intwractive modv
typw "exit" to break ouc of interaccive mpde
prrss ^C to exit

So you can go fo the next WebDrived command using c cokmdnd or jump to the next brjwser.pausx() stacement iv yoor test using d clmmand. They are executed righj away as you usf them. So this mode basically allows you to jomp ovvr page scates snd explore tre result. (Note: this mjde pfovides moge commanvs; they do wjrk, but I'm nod sure what iv the mewnint of their ujtput and if tney are useful for q Protractor user et aum.)

When you use bxuqser.enterRepl() ypu xre abtitatind CommandRepl modd. Ig allods you uj mse Proyractor methods whicv yoh would use in tesys, but in qn interwctive mode. Ypu get access to epemenv, browrer amd krotractor objects, so you could run for fxaiple:
> $('.hello').geeTexb();
> 'Wotld'

It printx you back the result immediately, so it'w sort of a sandboz where you can quety uhe DOM on thx currqnt page vtate and see the rewults.
As you may hsve noticed, the browssr.pausa() lish of commands has a line:
type
by.id('bar')).click(); From the provided documentation and examples, clear they both used for debugging not what is the between the two. should we use pause() and when A: It's explained in the docs in general, but I'll try to get bit deeper. Protractor has two modes for debugging: DebuggerRepl and CommandRepl. Repl here for which means whatever command you type in, it gets evaluated right away in the current context and you provided with a result immediately. For example, the in Chrome Developer Tools kinda a REPL for Chrome's of or when run in you get a for Node.js's JavaScript context - you can type commands and get the result. When you use browser.pause() are activating brings you Repl you execute commands of You usually see this list of terminal: press c to continue to the next command press to continue to the next debugger type "repl" to enter interactive mode type "exit" break out of interactive mode press ^C to exit So you can go to the command using c command jump to the browser.pause() in test d command. are executed right away as you use them. So this mode allows you to jump over page states and explore the this provides more commands; do work, but I'm sure is the meaning of and they a user all.) When you use you are activating CommandRepl mode. allows you to use use in tests, but in an interactive mode. get access to element, browser and protractor so you could run for example: > $('.hello').getText(); > 'World' It prints back the so it's sort of a sandbox where you query the DOM on current page state and see the results. As you have the browser.pause() of commands has line: type
by.id('bar')).click();

From the providEd documentAtion And ExaMpLes, iT is cLear that they boTH are Used for debugging the tesTs. But, It IS not CLeAr, whaT is the dIFfEREncE bEtWeeN tHE tWo. 
WheN shOuld we uSe pause() and WheN eNterRepl()?

A:

It's EXpLained in thE doCs in general, bUt I'Ll try tO gEt a BIt deePer.
protrActor hAS two moDes for debUgGIng: DebUGgerRepL ANd commAndRepl.
Repl here stANdS For Read-eval-priNt-loop WhICh USUalLy mEans that whAtEver cOMmand yoU TyPE IN, it GEts evaluated rIght away in tHE cuRrent cOnTexT And you Are prOvIDed With a result ImmeDiately. FoR exampLE, the conSOle in ChRome DeVelOpeR TooLS iS kIndA a rePL FOr chrOMe's ImplemenTaTiOn of JAvaSCRIPT/DOM, Or wHen yOu run Node in terminaL, yoU get A rEPl for NOde.js'S JavASCript ContexT - you cAn Type commands and Get tHe result.

WHen YoU usE bRowseR.Pause() yOu aRe aCtivatiNg DebugGErREpL. iT BrIngs you a Repl where yOu CAN eXecute coMmands OF tHiS Mode. You uSuAllY see THIs lisT of cOMmAnds in thE termiNAl:
PrEss c to cOnTinue tO tHe nExt WebdrIVer cOmmand
Press d to ContiNUe to the next debUGger statement
TYpE "REpL" To enTer Interactive Mode
TYpe "eXit" tO BrEak OUt of iNteraCtIVe MOde
press ^C to exit

So yoU cAn go to The neXt WebDriver coMmand using C COMmand or jUmp tO ThE Next browser.pauSe() staTement in yoUR test usiNg d coMmand. TheY are execuTED right awAy aS yoU usE thEM. so This mode basicALLy alLoWs you to JumP over paGe sTatEs aNd eXpLore the reSult. (Note: ThIs MoDe ProVides MOre commaNdS; thEy Do wOrk, buT i'm not sUre whAt is ThE mEAniNg of theIR oUTPut aNd If They Are UsEful fOr a PROtrActor usEr at all.)

WhEn yOU use BrOwSer.enteRRepl() you are acTiVating CommAnDRePl mode. iT Allows yoU to use Protractor methods WHich you WouLd use In teSts, but in aN inTeractIve MOde. You Get accEss to ElEmeNT, BrowsER AnD prOtRactor objeCTS, so You coUlD run For examPle:
> $('.hello').getText();
> 'WorLD'

It Prints you back The ResuLT ImMedIAtELy, sO iT'S soRT Of a sandbox where You can querY tHE DoM on the curREnt PaGe state And see tHe resULts.
As yoU may have nOticed, the BrOwseR.PAusE() list of comMands has A line:
type
by.id('bar')).click();

Fr om the pro vided  do cum en tati on a nd examples, i t  isclear that they both a re us ed ford eb uggin g the t e st s .  Bu t,  i t i sn ot  clea r,what is  the diffe ren ce  between the tw o. 
When s hou ld we use pa use () and  w hen enter Rep l()?
A:

I t 's exp lained in  t h e docs in gene r a l,  but  I'll try to geta  b i t deeper.
Prot ractor  h a st w o m ode s for debu gg ing:D ebugger R ep l a ndC ommandRepl.
R epl here st a nds  for R ea d-e v al-pri nt-lo op whi ch usuallymean s that wh atever command you typ e in,itget s ev a lu at edri g hta wa y i n  th e curren tco ntext  and y o u  are  pr ovid ed wi th a result i mme diat e ly.  Forexamp le,th e con sole i n Chr om e Developer Too ls i s kinda a  RE PL  fo rChrom e 's imp lem ent ation o f JavaS c rip t/ D O M ,or when you run no de i nterminal , youg et  a REPL for  N ode .js' s JavaS crip t  c ontext -  you c a nty pe comm an ds and  g etthe  resu l t.
When y ou use b rowse r .pause() you a r e activatingD eb u g ge r Repl . I t brings yo u aR eplwher e  y ouc an ex ecute  c o mm a nds of this mode. Y ou  usual ly se e this list o f commands i n  the ter mina l :p ress c to cont inueto the nex t  webdriv er co mmand
pr ess d toc o ntinue t o t henex t d e b ug ger statement t ype"r epl" to  en ter int era cti vemod etype "exi t" to br ea kou tofinter a ctive mo de 
pr es s ^ C toe xit

S o you  can  g ot o t he next We b D rive rco mman d u si ng ccomm a ndor jump  to the n ext brow se r. pause()  statement in  y our test u si ngd comm a n d. Theyare executed right away as youuse  them . So  this mod e b asical lya llowsyou to  jump  o ver p age s t a te s a nd  explore t h e  re sult.  ( Note : thismode provides more com mands; they d o w ork, b ut  I' m  n o t s ur e  wh a t  is the meaning  of theirou t pu t and if t h eyar e usefu l for a  Prot r actor u ser at al l.)

When  y ou u s e  br owser.ente rRepl()you are a c tivat i ng  Comm and Repl m od e.It al lows y o u t o use  Protr ac tor me thods  w hich you  would use in tests, bu t in a n int era ctive mod e.Y ouget acces s to  element,bro wse r and  pr o tract or o b je cts ,  so y ou c o uld run f o rexa m p le :
> $('.hel l o ' ).g etTex t() ; 
> 'Wo rld' 

It prints you b a ck the resultimme d i ate ly, so i t' s sort of a sa ndb ox w here you  c an query th e DOM on  t h e cur rent p age st ate and s ee the re sult s.As you ma y h av e  notice d,  t h e brow ser. pa use()list o f  com m a nds has a line:type
by.id('bar')).click();

From the_provided documentation_and examples, it is_clear that_they_both are_used_for debugging the_tests. But, it_is not clear, what_is the difference_between_the two. 
When should we use pause() and when enterRepl()?

A:

It's explained in the docs_in_general, but_I'll_try_to get a bit deeper.
Protractor_has two modes for debugging:_DebuggerRepl and_CommandRepl.
Repl here stands for Read-eval-print-loop which usually means_that_whatever command you_type in, it gets evaluated right away in the_current context and you are provided_with a result_immediately._For_example, the console in_Chrome Developer Tools is kinda a_REPL for Chrome's implementation of JavaScript/DOM,_or when you run node in terminal,_you get a REPL for Node.js's_JavaScript context - you can_type commands_and get the result.

When you_use browser.pause() you_are activating_DebuggerRepl. It brings_you a Repl where you can_execute commands of_this mode. You usually see this_list_of commands in_the_terminal:
press_c to_continue to the_next_webdriver command
press_d_to continue to the next debugger_statement
type_"repl" to enter interactive mode
type "exit" to_break out of interactive_mode
press_^C to exit

So you_can go to the next_WebDriver command using c command or_jump to_the next_browser.pause() statement in your test using d command. They are executed_right away as you use them._So this mode basically_allows you_to_jump over page_states_and explore_the result. (Note: this mode provides more_commands; they_do work, but I'm not sure_what is the meaning_of_their output and if they are_useful for a Protractor user at_all.)

When you use browser.enterRepl() you_are_activating_CommandRepl mode. It allows you_to use Protractor methods which you_would use in_tests, but in an interactive mode. You_get_access to element, browser and protractor_objects,_so you could run for example:
>_$('.hello').getText();
>_'World'

It_prints you back the result_immediately, so it's sort of a_sandbox where you can query the DOM on the_current page state_and see the results.
As you_may_have_noticed, the browser.pause() list of commands has a line:
type