Boshsiz Chrome-dan qo'rqmang! Uni Ember sinovida nima uchun va qanday ishlatishni bilib oling

So'nggi yangilangan 9/1/17, Ember CLI 2.15. Menga disk raskadrovka qilishda yordam bergani uchun Skot Newkomer va Ben Demboskiga, tahrirlash uchun Karl Bekkerga va CLI bo'yicha ba'zi maslahatlar uchun Tobias Bieniekga alohida rahmat!

Bir necha soat davomida mening buyruq satridan yugurishni rad etgan mening EmberJS sinov dasturimni tuzatgandan so'ng, men PhantomJS-ni tortdim va Headless Chrome-ga o'tdim. Keling, bu nimani anglatishini, qanday qilganimni va ta'sirlari nimani anglatishini keling.

Boshsiz Chrome nima?

Ember dasturchilarida sinov to'plamini ishlatish uchun qaysi brauzerlardan foydalanish imkoniyati mavjud va Headless Chrome ulardan biri. Ammo bu nima? Google blogida shunday deyilgan:

Bu Chrome brauzerini boshsiz muhitda ishga tushirish usuli. Aslida, Chrome brauzerini Chromesiz ishlaydi!
(Alt: bu nima, men uni ham bilmayman ...)

To'g'ri. Vikipediyadan aniqroq ta'rif:

Boshsiz brauzer - bu grafik foydalanuvchi interfeysisiz veb-brauzer. Boshsiz brauzerlar veb-sahifani mashhur veb-brauzerlarga o'xshash muhitda avtomatik boshqarishni ta'minlaydi, ammo buyruq satri interfeysi yoki tarmoq aloqasidan foydalangan holda bajariladi.

Ember CLI 2.15-dan boshlab, EmberJS-da sinash uchun boshsiz Chrome standart hisoblanadi. Agar siz eski Ember ilovasi bilan ishlayotgan bo'lsangiz, menda yaxshi xabar bor - boshsiz Chrome-ni sinab ko'rish uchun ilovangizni yangilashingiz shart emas. Aslida, deyarli har qanday eski Ember ilovasi versiyasi bilan CLI-ning so'nggi versiyasidan foydalanishingiz mumkin.

Nima uchun "boshsiz" muhit kerak?

Oddiy brauzer kabi boshsiz brauzer HTML va CSS-ni tushunadi. AJAX so'rovlari kabi JavaScript-ni bajarishi mumkin. Emberda qabul qilish testlari haqida o'ylang. Agar test yashirilgan tugmani bosishga harakat qilsa, uni bosish mumkin emas va sinov muvaffaqiyatsiz tugashi kerak. Ammo bu qanday ma'lum? Chunki brauzer barcha HTML, CSS va JavaScript-ni bir foydali narsaga birlashtirishni og'irlashtiradi. Ko'rsatiladigan rasmlar yo'qligi sababli, boshsiz muhitda sinov tezroq amalga oshiriladi. Boshsiz brauzerlarning xilma-xil turlari mavjud. Chrome va PhantomJS - bu ikkita misol.

Xo'sh, nega shunchaki sinovlarni oddiy Chrome brauzerida o'tkazmasligingiz kerak? Agar sizda Ember ilovasi bo'lsa, ember xizmatini ishga tushiring va http: // localhost: 4200 / testlarga tashrif buyuring, siz haqiqatan ham testlaringizni real vaqt rejimida ko'rishingiz yoki ularni to'xtatib turishingiz va ilova holatiga ingl. Biroq, odatda CI deb ataladigan uzluksiz integratsiya testida foydalanilganda boshsiz brauzerlar chindan ham porlaydi. Ishlab chiqarishda ishlatiladigan dasturlarda kod to'plamiga binoan sinov to'plamingizni avtomatik ravishda ishga tushiradigan xizmatdan foydalanish odatiy holdir. Ko'pincha, ushbu testlar "oddiy" brauzerlarda emas, balki serverda ishlaydi. Masalan, Ember veb-saytining bir qismi uchun ochiq tortish so'rovlarini tekshiring, ayniqsa yonida qizil x bor bo'lsa. GitHub-da har safar ochish so'rovi ochilganda, u sinovlardan o'tadimi yoki yo'qligini ko'rishingiz mumkin.

Bu mening iltimosim emas. Qasam ichaman. (Alt: GitHub-ning tortishish so'rovida bir nechta sinov muvaffaqiyatsizligini ko'rsatuvchi rasm)

Nega PhantomJS-dan foydalanmasligingiz kerak?

PhantomJS - bu boshsiz brauzerning yana bir misoli. Uni yaratish va saqlash Herculeanning vazifasi edi va uning muvaffaqiyati - bizda chiroyli narsalar bor. Ilovalarni yaratish juda qiyin ... butun brauzerni qurishni tasavvur qila olasizmi ??? Ammo u o'z yo'lini topayotganday tuyuladi. Bitta ustoz 2017 yil aprel oyida iste'foga chiqdi, dedi:

Boshsiz Chrome kelmoqda. O'ylaymanki, odamlar oxir-oqibat unga o'tadilar. PhantomJS-ga qaraganda Chrome tez va barqaror. Va u aqldan ozgan kabi xotirani yemaydi. PhantomJS-ni rivojlantirishda kelajakni ko'rmayapman.

Xizmat ko'rsatuvchi ta'kidlaganidek, PhantomJS ba'zi muammolarga ega. Menda bittasi bor edi: sinovlardan birortasi ham o'tmaydi. Yangi ilova-da hamma narsa yaxshi edi, lekin ba'zi bir aniq o'rnatilgan qaramliklarni kiritgandan so'ng haqiqiy ilovamning noma'lum qismi mos kelmadi. Ember testini o'tkazdim, lekin har qanday sinovlar boshlanishidan oldin, meni bu xatolar kutib oldi:

to'g'ri emas 1 PhantomJS 2.1 - Global xato: Sintaksiya Xato: kutilmagan token '}' manzilida http: // localhost: 7357 / aktivlar / vendor.js, 120177-qator.
yaxshi emas 2 PhantomJS 2.1 - Global xato: Xato: Ember-sinov moduli topilmadi: http: // localhost: 7357 / aktivlar / test-support.js, 58-qator.
yaxshi emas 3 PhantomJS 2.1 - Global xato: MalumotXato: O'zgaruvchini topib bo'lmaydi: http: // localhost: 7357 / property / ember-bio-bright.js, 5-qatorda aniqlang
yaxshi emas 4 PhantomJS 2.1 - Global xato: MalumotXato: O'zgaruvchini topib bo'lmaydi: http: // localhost: 7357 / aktivlar / testlar.js, 3 qatorda aniqlang.
yo'q 5 PhantomJS 2.1 - Global xato: MalumotXato: O'zgaruvchini topib bo'lmaydi: EmberENV da http: // localhost: 7357/4215 / testlar / index.html? yashirin, 38-qator.

Men bu xatoga hamma narsani tashladim. Tugun modullarini portlatish, eng oddiy sinovlardan tashqari, EmberCLI-ni qayta o'rnatish, PhantomJS-ni o'rnatish / o'chirish, sotuvchi to'plamga kirish, g'azablangan mushuk GIF-larini ulashish, tutatqi tutatish ... hech narsa.

Bir nechta savol va javoblarni boshqa ishlab chiquvchilar bilan olib borganimdan so'ng, men xatolarni tuzatish osonlashayotganligini bilish uchun Boshsiz Chrome-ni sinab ko'rishni taklif qildim.

Xatolarni tuzatish osonlashmadi.

Xatolar shunchaki yo'qoldi.

Kommutatorni qanday qilish kerak

Ember dasturlarida testem.js deb nomlangan fayl mavjud va shu erda ember testi yoki ember testini yozishda qaysi sinov vositalaridan foydalanishni sozlashingiz mumkin-server. Bu erda men Rayan Torontoning maqolasidan foydalangan, nusxalashgan va yopishtirgan testem.js tarkibiga havola mavjud. EmberCLI bilan birga jo'natilgan test faylini EmberCLI GitHub-da ushbu havolada ko'rishingiz mumkin.

Testem nima?

Testem - bu sinov testi yuguruvchisi, ya'ni u testem.js-da siz ko'rsatgan konfiguratsiyadan foydalanib, ilovangizning sinovlarini yuklaydi va ishlaydi. Shuningdek, sinov natijalarini buyruq satridan ko'rish uchun do'stona interfeysga ega bo'lasiz. Testem Emberga xos emasligini bilib hayron bo'ldim. U ko'plab JavaScript ramkalari, sinov vositalari (QUnit, Mocha va Yasemin kabi) va brauzer muhiti bilan ishlaydi.

Buni ko'rasizmi? Bu

Boshsiz Chrome qanday salbiy ta'sir ko'rsatishi mumkin?

Bir narsa, Headless Chrome PhantomJS kabi ochiq manba emas. Buning ijobiy va salbiy tomonlari o'zlarining maqolalari bo'lishi mumkin.

Bu ham yangi. U Chrome 59 bilan jo'natildi, ammo ishlab chiquvchilar bundan oldin Chrome-dan foydalanish usullariga ega edilar. Katta savol, agar siz CI sinovini o'tkazgan bo'lsangiz, sotuvchingiz uni qay darajada qo'llab-quvvatlaydi? Ko'pgina yirik o'yinchilar buni tezda amalga oshirishga harakat qilishdi, ammo ba'zi muammolarga duch kelishingiz mumkin.

Va nihoyat, siz PhantomJS-da o'tadigan va Headless Chrome-da muvaffaqiyatsiz sinovlarni boshdan kechirishingiz mumkin, bu esa ba'zi nosozliklarni tuzatish vaqti keldi. Albatta, men teskari tomonni boshdan kechirdim, bu erda men boshsiz brauzerlarni almashtirganimda barcha muammolarim deyarli yo'q bo'lib ketdi, ammo muammolar kam emas. Bu Chrome-da ajoyib narsalarga o'xshash og'riq nuqtasi, ammo ular Firefox-da portlashadi. Shuning uchun va ba'zi testlarni yanada mustahkam qilish uchun ba'zi tashkilotlar o'zlarining sinovlarini bir nechta boshsiz vositalarda o'tkazadilar.

Qachon o'tish kerak

Agar siz o'zingizni teskari his qilsangiz yoki Emberni sinash uchun eng yangi va eng zo'rligini bilishni istasangiz, uni sinab ko'ring!

Baxtsiz boshsiz sinov!

IrenHorrors tomonidan yaratilgan Creative Commons Attribution-Notijorat-No derivativ Works 3.0 litsenziyasi bo'yicha taqsimlangan.