Ärge kartke peata Chrome'i! Siit saate teada, miks ja kuidas seda Emberi testimiseks kasutada

Viimati värskendatud 1.7.17, Ember CLI 2.15. Eriline tänu Scott Uustulnukale ja Ben Demboskile abi eest mul silumistes, Karl Beckerile redigeerimise eest ja Tobias Bieniekile mõne CLI näpunäite eest!

Mõne tunni pärast siludes minu käsurealt käivitamisest keeldunud EmberJS-i testimiskomplekti, kanaliseerisin PhantomJS-i ja lülitasin sisse Headless Chrome'i. Jagageme ära, mida see kõik tähendab, kuidas ma seda tegin ja millised on selle mõjud.

Mis on isegi peata Chrome?

Emberi arendajatel on valikuid, milliseid brausereid nad oma testimiskomplekti käitamiseks kasutavad, ja peata Chrome on üks neist. Aga mis see on? Google'i ajaveeb ütleb:

See on viis Chrome'i brauseri juhtimiseks peata keskkonnas. Põhimõtteliselt töötab Chrome ilma kroomita!
(Alt: mis see on, ma isegi ei ...)

Õige. Siin on parem määratlus Vikipeediast:

Peata brauser on veebibrauser, millel puudub graafiline kasutajaliides. Peata brauserid tagavad veebilehe automatiseeritud juhtimise keskkonnas, mis sarnaneb populaarsetele veebibrauseritele, kuid neid täidetakse käsuribaliidese kaudu või võrgusidet kasutades.

Alates Ember CLI 2.15-st on EmberJS-is testimiseks vaikimisi peata Chrome. Kui töötate vanema Emberi rakendusega, on mul häid uudiseid - peata Chrome'i proovimiseks ei pea te oma rakendust täiendama. Tegelikult võite kasutada uusimat CLI väljaannet peaaegu iga vanema Emberi rakenduse versiooniga.

Miks on vaja nn peata keskkonda?

Nii nagu tavaline brauser, mõistab ka peata brauser HTML-i ja CSS-i. See võib JavaScripti täita nagu AJAXi taotlused. Mõelge vastuvõtukatsetele Emberis. Kui test proovib klõpsata peidetud nupul, ei tohiks see klõpsata ja test peaks ebaõnnestuma. Aga kuidas seda teada saadakse? Kuna brauser muudab raskeks HTML-i, CSS-i ja JavaScripti ühendamise millekski kasulikuks. Kuna kuvatavaid pilte pole, on testimine peata keskkonnas kiirem. Peata brausereid on palju erinevaid. Chrome ja PhantomJS on vaid kaks näidet.

Niisiis, miks mitte ainult testid otse tavalises Chrome'i brauseris käivitada? Kui teil on Emberi rakendus, käivitage Etherneti teenus ja külastage veebisaiti http: // localhost: 4200 / tests, saate reaalajas oma teste vaadata või peatada ja rakenduse olekut visuaalselt vaadata. Seal, kus peata brauserid tõeliselt säravad, on see, kui neid kasutatakse pideva integratsiooni testimiseks, mida tavaliselt nimetatakse CI-ks. Tootmisrakendustes on tavaline kasutada teenust, mis käivitab teie testi komplekti automaatselt, kui kood on sisestatud. Ja enamasti töötavad need testid serveris, mitte “tavalistes” brauserites. Näiteks vaadake Emberi veebisaidi osa avatud tõmbetaotlusi, eriti kõiki, mille kõrval on punane x. Kui tõmbetaotlus avatakse GitHubis, saate vaadata, kas see läbib testid.

See pole minu tõmbetaotlus. Ma vannun. (Alt: pilt, mis näitab mitu testitõrget GitHubi tõmbetaotluses)

Miks mitte kasutada PhantomJS-i?

PhantomJS on veel üks peata brauseri näide. Selle loomine ja hooldamine oli Heraklese ülesanne ja selle edukuse tõttu on meil toredaid asju. Rakenduste loomine on raske ... kas te kujutate ette terve brauseri ehitamist ??? Kuid tundub, et see on väljapääs. Üks hooldaja astus 2017. aasta aprillis tagasi, öeldes:

Peata Chrome on tulekul. Ma arvan, et lõpuks lülituvad inimesed selle juurde. Chrome on kiirem ja stabiilsem kui PhantomJS. Ja see ei söö mälu nagu hull. Ma ei näe PhantomJSi arendamisel mingit tulevikku.

Nagu hooldaja märkis, on PhantomJS-l mõned probleemid. Mul oli üks oma: ühtegi minu testi ei tehta. Värskes rakenduses oli kõik korras, kuid minu pärisrakenduse tundmatu osa ei olnud pärast väljakujunenud sõltuvuste kasutuselevõttu ühilduv. Tegin inimkatse, kuid enne, kui testid olid isegi alanud, tervitasid mind järgmised vead:

pole korras 1 PhantomJS 2.1 - globaalne tõrge: SyntaxError: ootamatu luba '}' aadressil http: // localhost: 7357 / varad / müüja.js, rida 120177
pole korras 2 PhantomJS 2.1 - globaalne tõrge: Tõrge: Ei leidnud moodulit man-metal, mida nõuab: inimese testimine / tugi aadressil http: // localhost: 7357 / varad / test-support.js, rida 58
pole korras 3 PhantomJS 2.1 - globaalne tõrge: ReferenceError: Muutujat ei leia: määratlege aadressil http: // localhost: 7357 / varad / ember-bio-bright.js, rida 5
pole korras 4 PhantomJS 2.1 - globaalne tõrge: ReferenceError: Muutujat ei leia: määratlege aadressil http: // localhost: 7357 / varad / testid.js, 3. rida
pole korras 5 PhantomJS 2.1 - globaalne tõrge: ReferenceError: Muutujat ei leita: EmberENV aadressil http: // localhost: 7357/4215 / tests / index.html? hidepassed, rida 38

Viskasin selle vea peale kõik. Sõlme moodulite puhumine, kõige muu eemaldamine, välja arvatud kõige lihtsam test, EmberCLI uuesti installimine, PhantomJS installimine / desinstallimine, müüjakomplekti kaevamine, vihaste kasside GIF-ide jagamine, viirukite süütamine ... midagi.

Pärast mõne teise arendajaga pisut küsimuste ja vastuste tegemist soovitati proovida Headless Chrome'i, et kontrollida, kas vigu on kergem siluda.

Vigade silumine ei muutunud lihtsamaks.

Vead lihtsalt kadusid.

Kuidas lülitit teha

Emberi rakendustes on fail nimega testem.js ja seal saate konfigureerida, milliseid testimisriistu kasutada tööjõutesti või -testi tippimisel - server. Siin on link testem.js sisule, mille ma lõpuks kasutasin, kopeerisin ja kleepisin Ryan Toronto artiklist. EmberCLI-ga tarnitud testtem-faili saate vaadata sellel lingil EmberCLI GitHubis.

Mis on Testem?

Testem on testjooksja, mis tähendab, et see laadib ja viib teie rakenduse testid läbi testtem.js määratud konfiguratsiooni. Samuti saate sõbraliku liidese, et käsurealt testide tulemusi näha. Olin üllatunud, kui sain teada, et Testem pole Emberile ainulaadne. See töötab paljude JavaScripti raamistike, testimisriistade (nt QUnit, Mocha ja Jasmine) ning brauseri keskkondadega.

Vaata seda? See on Testem tegevuses, mis tuleneb

Millist negatiivset mõju võib peata Chrome avaldada?

Noh, esiteks pole Headless Chrome avatud lähtekoodiga nagu PhantomJS. Selle plussid ja miinused võiksid olla nende enda artikkel.

See on ka uus-ish. See tarniti koos versiooniga Chrome 59, kuid enne seda on arendajatel olnud võimalusi Chrome'i kasutamiseks. Suur küsimus on, kui te juba teete CI-testimist, kui hästi teie müüja seda toetab? Paljud suured tegijad on selle kiirelt rakendanud, kuid on võimalik, et võite mõne probleemiga kokku puutuda.

Lõpuks võib teil olla mõni test, mis läbib PhantomJS ja Headless Chrome'i ebaõnnestub, mis tähendab, et on aeg siluda. Muidugi kogesin vastupidist, kus peata brauserite vahetamisel kadusid kõik minu probleemid võluväel, kuid probleemid pole haruldased. See on valupunkt, mis sarnaneb asjadega, mis näevad Chrome'is suurepärased välja, kuid plahvatavad Firefoxis. Sel põhjusel ja testide kindlamaks muutmiseks juhivad mõned organisatsioonid oma teste mitme peata tööriistaga.

Millal vahetada

Kui teil on tunne ummikus või soovite lihtsalt teada saada, mis on Emberi testimisel uusim ja parim, proovige seda!

Head peata testimist!

IrenHorrorsi kunstiteos, jagatud Creative Commonsi omistamise - mitteärilise - tuletisinstrumentideta litsentsi 3.0 litsentsi all