Nebaidieties no Chrome bez galvas! Uzziniet, kāpēc un kā to izmantot dzintara testēšanai

Pēdējo reizi atjaunināts 2017. gada 1. septembrī, Ember CLI 2.15. Īpašs paldies Skotam Jaunpienācējam un Benam Demboski par palīdzību man atkļūdošanā, Karlam Bekeram par rediģēšanu un Tobiasam Bieniekam par dažiem CLI padomiem!

Pēc dažām stundām atkļūdot manu EmberJS testēšanas komplektu, kurš atteicās palaist no komandrindas, es novadīju PhantomJS un pārgāju uz Headless Chrome. Nodalīsim, ko tas viss nozīmē, kā es to izdarīju un kāda ir ietekme.

Kas ir pat Chrome bez galvas?

Ember izstrādātājiem ir iespējas, kuras pārlūkprogrammas viņi izmanto, lai palaistu savu testēšanas komplektu, un viens no tiem ir Chrome bez galvas. Bet kas tas ir? Google emuārā teikts:

Tas ir veids, kā darbināt Chrome pārlūku bez galvas. Būtībā pārlūka Chrome darbināšana bez hroma!
(Alt: kas tas ir, man pat nav ...)

Pa labi. Labāka Wikipedia definīcija:

Pārlūks bez galvas ir tīmekļa pārlūks bez grafiskas lietotāja saskarnes. Bez galvas pārlūkprogrammas nodrošina automātisku Web lapas kontroli vidē, kas līdzīga populārajiem tīmekļa pārlūkiem, bet tiek izpildīta, izmantojot komandrindas saskarni vai izmantojot tīkla komunikāciju.

Sākot ar Ember CLI 2.15, Chrome bez galvas ir noklusējuma pārbaude EmberJS. Ja strādājat ar vecāku lietotni Ember, man ir labas ziņas - jums nav jājaunina sava lietotne, lai izmēģinātu Chrome bez galvas. Faktiski jūs varat izmantot jaunāko CLI izlaidumu ar gandrīz jebkuru vecāku lietotnes Ember versiju.

Kāpēc ir nepieciešama vide bez galvas?

Tāpat kā parasts pārlūks, arī bez galvas pārlūks saprot HTML un CSS. Tas var izpildīt JavaScript tāpat kā AJAX pieprasījumus. Padomājiet par pieņemšanas testiem Dzintarā. Ja tests mēģina noklikšķināt uz slēptās pogas, uz tā nevajadzētu noklikšķināt, un pārbaudei vajadzētu neizdoties. Bet kā tas ir zināms? Tā kā pārlūks apgrūtina visu HTML, CSS un JavaScript apvienošanu kaut kas noderīgs. Tā kā nav neviena attēlojamā attēla, bezgalvju vidē pārbaude tiek veikta ātrāk. Ir daudz dažādu veidu bez galvas pārlūkiem. Pārlūks Chrome un PhantomJS ir tikai divi piemēri.

Tātad, kāpēc ne tikai palaist testus tieši parastā Chrome pārlūkā? Ja jums ir lietotne Ember, palaidiet Ember kalpot un apmeklējiet vietni http: // localhost: 4200 / tests, jūs faktiski varat skatīties, kā jūsu testi darbojas reālā laikā, vai arī apturēt to darbību un vizuāli aplūkot lietotnes stāvokli. Tomēr tas, kur bezgalvju pārlūkprogrammas patiešām mirdz, ir tas, kad tos izmanto nepārtrauktas integrācijas testēšanai, ko parasti sauc par CI. Ražošanas lietotnēs parasti tiek izmantots pakalpojums, kas automātiski palaiž jūsu testa komplektu, kad kods tiek piešķirts. Un lielākoties šie testi darbojas serverī, nevis “parastos” pārlūkos. Piemēram, pārbaudiet atvērtos “pull pull” pieprasījumus vietnei Ember, it īpaši visiem, kuriem blakus ir sarkans x. Ikreiz, kad GitHub tiek atvērts vilkšanas pieprasījums, varat redzēt, vai tas iztur testus.

Tas nav mans lūgums. ES zvēru. (Alt: attēls, kurā parādītas vairākas testa kļūmes pēc GitHub pieprasījuma pieprasījuma)

Kāpēc neizmantot PhantomJS?

PhantomJS ir vēl viens pārlūka bez galvas piemērs. Tā izveidošana un uzturēšana bija Herculean uzdevums, un tā panākumi ir iemesls, kāpēc mums ir jaukas lietas. Lietotņu izveide ir grūta ... vai varat iedomāties izveidot visu pārlūku ??? Bet šķiet, ka tas ir pa ceļam. Viens uzturētājs 2017. gada aprīlī atkāpās no darba, sakot:

Tiek parādīts Chrome bez galvas. Es domāju, ka cilvēki galu galā to mainīs. Pārlūks Chrome ir ātrāks un stabilāks nekā PhantomJS. Un tas neēd atmiņu kā traks. Es neredzu nākotni PhantomJS attīstībā.

Kā atzīmēja uzturētājs, PhantomJS ir dažas problēmas. Man bija viens no maniem: neviens no maniem testiem nedarbosies. Svaigā lietotnē viss bija kārtībā, taču dažas nezināmas manas īstās lietotnes daļas pēc dažu vispāratzītu atkarību ieviešanas nebija savietojamas. Es vadīju darbaspēka pārbaudi, bet pirms vēl nebija sākušies testi, mani sagaidīja šādas kļūdas:

nav kārtībā 1 PhantomJS 2.1 - globāla kļūda: SyntaxError: negaidīts marķieris '}' vietnē http: // localhost: 7357 / resources / vendor.js, līnija 120177
nav kārtībā 2 PhantomJS 2.1 - Globāla kļūda: Kļūda: Nevarēja atrast moduļa man-metal prasīto: person-testing / support vietnē http: // localhost: 7357 / aktīvi / test-support.js, 58. rinda
nav kārtībā 3 PhantomJS 2.1 - globālā kļūda: ReferenceError: Nevar atrast mainīgo: definējiet vietnē http: // localhost: 7357 / aktīvi / ember-bio-bright.js, 5. rinda
nav kārtībā 4 PhantomJS 2.1 - globāla kļūda: ReferenceError: nevar atrast mainīgo: definējiet vietnē http: // localhost: 7357 / aktīvi / testi.js, 3. rinda
nav kārtībā 5 PhantomJS 2.1 - globāla kļūda: ReferenceError: nevar atrast mainīgo: EmberENV vietnē http: // localhost: 7357/4215 / tests / index.html? hidepassed, 38. rinda

Es izmetu visu uz šo kļūdu. Mezglu moduļu uzspridzināšana, visu, izņemot vienkāršāko, testu noņemšana, EmberCLI atkārtota instalēšana, PhantomJS instalēšana / atinstalēšana, iegrimšana pārdevēja paketē, dusmīgu kaķu GIF dalīšana, vīraka iedegšana… nekas.

Pēc nedaudz jautājumu un atbilžu izskatīšanas ar pāris citiem izstrādātājiem tika ieteikts izmēģināt Chrome bez galvas, lai redzētu, vai kļūdas ir vieglāk atkļūdot.

Kļūdas nebija vieglāk atkļūdot.

Kļūdas vienkārši pazuda.

Kā veikt slēdzi

Ember lietotnēs ir fails ar nosaukumu testem.js, un tajā jūs konfigurējat, kurus pārbaudes rīkus izmantot, ierakstot darbaspēka pārbaudi vai darbaspēka pārbaudi - serveri. Šī ir saite uz testem.js saturu, kuru es beidzot izmantoju, nokopēju un ielīmēju no Raiena Toronto raksta. Ar EmberCLI piegādāto testem failu var apskatīt, izmantojot šo saiti EmberCLI GitHub.

Kas ir Testem?

Testem ir testa skrējējs, kas nozīmē, ka tas ielādē un palaiž jūsu lietotnes testus, izmantojot konfigurācijā, kuru norādījāt testem.js. Jūs arī saņemat draudzīgu saskarni, lai no komandrindas redzētu savu testu rezultātus. Es biju pārsteigts, uzzinot, ka Testem nav tikai Ember. Tas darbojas ar daudziem JavaScript ietvariem, testēšanas rīkiem (piemēram, QUnit, Mocha un Jasmine) un pārlūkprogrammu vidēm.

Redzēt šo? Tas ir Testem darbībā, kas izriet no “cilvēku testa - servera”. Kā redzat, mans jaunākais darbs pie ember-api-dokumentiem norisinās lieliski. Viss būs kārtībā, un es noteikti zinu, ko daru. Nē. (Alt: termināla logs, kurā testa tempa rādītājs parāda 175 testa kļūmes)

Kādu negatīvu iespaidu varētu radīt galvu neapstrādātais Chrome?

Pirmkārt, Chrome bez galvas, nav tāds atvērts avots kā PhantomJS. Plusi un mīnusi tam varētu būt viņu pašu raksts.

Tas ir arī jauns. Tas tika piegādāts kopā ar pārlūku Chrome 59, taču izstrādātājiem jau pirms tam ir bijuši veidi, kā izmantot pārlūku Chrome. Liels jautājums ir, ja jūs jau veicat KI testēšanu, cik labi jūsu pārdevējs to atbalsta? Daudzi lielie dalībnieki to ir ātri ieviesuši, taču iespējams, ka jums nāksies saskarties ar kādām problēmām.

Visbeidzot, iespējams, jums būs daži testi, kas iziet PhantomJS un neizdosies pārlūkā Chrome bez galvas, kas nozīmē, ka ir pienācis laiks veikt atkļūdošanu. Protams, es piedzīvoju apgriezto virzienu, kad visas manas problēmas maģiski pazuda, pārslēdzot pārlūkus bez galvas, taču problēmas nav nekas neparasts. Tas ir sāpju punkts, kas līdzīgs lietām, kuras lieliski izskatās pārlūkā Chrome, taču tās eksplodē pārlūkprogrammā Firefox. Šī iemesla dēļ un lai padarītu savus testus noturīgākus, dažas organizācijas testus veic vairākos bezgalvju rīkos.

Kad jāmaina

Ja jūtaties iestrēdzis vai vienkārši vēlaties uzzināt, kāds ir jaunākais un lielākais Ember testēšana, izmēģiniet to!

Priecīgu testēšanu bez galvas!

IrenHorrors mākslas darbs, koplietots saskaņā ar licenci Creative Commons Attribution-nekomerciāls-Atvasinātu darbu 3.0 licence