Lompat ke konten utama
EP 35

Ngobrolin Otomasi bersama Jecelyn

Ringkasan Episode

Bantu Koreksi

Episode ini kedatangan Jecelyn dari Malaysia, yang bekerja di tim Chrome DevTools untuk urusan debugging dan otomasi pengujian. Sebagian besar obrolan berbahasa Inggris, dibuka dengan kisah perjalanannya: masuk ke dunia IT lewat beasiswa yang menyediakan uang saku, sempat ditolak mentah-mentah di wawancara pertama karena dianggap tidak layak melamar, lalu perlahan aktif berbagi dan mengurus komunitas — termasuk mendirikan komunitas pengembang perempuan karena di kantornya nyaris tidak ada rekan perempuan. Dari kebiasaan berbagi itulah pintu-pintu berikutnya terbuka. Topik utamanya evolusi otomasi browser, dan dua protokol yang berbeda kekuatannya. CDP, Chrome DevTools Protocol, berjalan di atas WebSocket sehingga cepat, dua arah, dan bisa mengendalikan hal-hal tingkat rendah seperti mencegat request jaringan, memalsukan lokasi, atau membaca pesan konsol — tapi ia bukan standar, sehingga bisa berubah sewaktu-waktu dan hanya jalan di Chrome dan Chromium. Di sisi lain WebDriver Classic adalah standar yang jalan di mana-mana, tapi searah dan tidak menjangkau hal-hal tingkat rendah itu. Jalan keluarnya adalah WebDriver BiDi, yang menggabungkan keduanya: standar lintas browser sekaligus dua arah. Yang membuatnya meyakinkan adalah siapa yang menggarapnya bersama — Selenium dan WebDriver IO ikut dalam kolaborasinya, karena merekalah yang paling tahu bagaimana API semacam ini seharusnya bekerja. Dijelaskan juga pembagian perannya: Chrome DevTools ada di ranah debugging, sementara Puppeteer ada di ranah testing, dan pekerjaannya justru berdiri di persimpangan keduanya.

Poin-poin Utama

  • Tamunya bekerja di tim Chrome DevTools; jalannya ke sana dimulai dari beasiswa beruang saku dan wawancara pertama yang menolaknya mentah-mentah
  • Ia mendirikan komunitas pengembang perempuan karena di kantornya nyaris tidak ada rekan perempuan, dan dari kebiasaan berbagi itulah pintu berikutnya terbuka
  • CDP berjalan di atas WebSocket sehingga cepat, dua arah, dan bisa mencegat request jaringan atau memalsukan lokasi — tapi bukan standar dan hanya jalan di Chrome dan Chromium
  • WebDriver Classic kebalikannya: standar yang jalan di semua browser, tapi searah dan tidak menjangkau kendali tingkat rendah
  • WebDriver BiDi menggabungkan keduanya — standar lintas browser sekaligus dua arah
  • Yang membuatnya meyakinkan adalah kolaborasinya: Selenium dan WebDriver IO ikut menggarap, karena merekalah yang paling tahu bagaimana API semacam ini seharusnya bekerja
  • Pembagian ranahnya jelas: Chrome DevTools di sisi debugging, Puppeteer di sisi testing, dan pekerjaannya berdiri di persimpangan keduanya

Halo, halo, selamat malam.

Selamat Hari Selasa.

Selamat Hari Selasa, dan hari selasa adalah waktunya...

Ngobrolin web.

Malam hari ini bukan hanya kita bertiga, bukan hanya ada saya, Riza, ada Eka, dan ada Irfan.

Jadi trio web, plus...

Plus satu.

Featuringnya ini.

Ini spesial karena ini adalah edisi pertama kita undang orang di luar Indonesia.

Dan teman-teman mungkin sudah tahu karena judulnya sudah ada namanya ya, dan mungkin sudah sers-sers juga, gitu kan.

Udah kita mention juga di beberapa episode sebelumnya, jadi kita langsung panggilkan saja, dan berikan sambutan yang meriah untuk tamu kita dari Malaysia, Kak Ros, oh bukan ya.

Halo Jocelyn, selamat datang Jocelyn, selamat datang. Jiran, di garasi Jiran.

Jocelyn, bagaimana dengan kamu?

Saya baik, sekarang ini malam saya, mungkin ini waktu malam kamu.

Di mana kamu sekarang?

Saya di...

Biar saya pikirkan, saya di Munich sekarang.

Kenapa kamu harus pikirkan?

Ya karena saya baru balik dari Amsterdam, dan sekarang saya akan pergi ke Rumania.

Jadi saya harus pikirkan.

Wow, sangat sibuk.

Ya, bulan ini adalah bulan conferensi, jadi ada banyak conferensi.

Adakah karena I/O extended atau I/O event?

I/O event akan berlaku pada akhir bulan ini. Tapi secara umum, karena ini adalah waktu musim di Eropa.

Jadi saya bahagia untuk pergi ke conferensi, untuk bertemu dengan orang lain.

Jadi ini adalah conferensi JavaScript, jadi saya baru balik dari ASN.

Ada juga satu World Camp Europe yang akan berlaku pada hujung minggu ini di Athens. Saya percaya ada beberapa kolega kamu yang terlibat dalam World Press Project.

Seperti Felix, atau siapa lagi... Thomas...

Saya tidak tahu, Thomas Muller mungkin?

- Thomas, bukan? - Tidak, tidak.

Lihat transkrip lengkap (2158 segmen lagi)

Beri? Ya, ada beberapa dari mereka yang akan mencoba World Camp.

Mungkin Rick Fiskomi.

Ya, mungkin. Saya pikir dia pergi ke World Press Camp di World Camp di Thailand, Bangkok.

- Di World Camp Asia? - Ya, dia ada di sana.

- Maksud saya, kamu ada di sana juga? - Ya, saya ada di sana.

- Saya juga... - Tentu saja, dia ada di sana.

- Saya perempuan. - Perempuan? Wow, saya tidak tahu.

Okay, Jessalyn, mungkin untuk meletakkan konteks sebelum kita berbicara tentang automasi dan web,

- kita berbicara tentang... Anda perlu memperkenalkan diri sendiri. - Tidak.

- Anda adalah SDDE, bukan? Google Developer Expert di... - Ya.

- Angular? Di web teknologi? - Ya, di Angular.

- Dan sekarang, Anda bekerja di Google sebagai... - Tidak, saya bukan SDDE.

- Saya adalah SDDevRel di Chrome DevTools, bukan? - Ya.

- Ya, juga secara general, titel pekerjaan saya adalah untuk debugging dan testing. - Debuging dan testing, oke.

Chrome DevTools adalah di bawah debugging, dan WebTravel, Pydye, dan Puppeteer adalah di bawah testing.

- Jadi, seperti ini. - Di kedua dunia, jadi Anda menyebrang jalan.

Ya, debugging dan testing. Ya, tapi sebenarnya itu agak serupa, ya.

Ya, ya, ya. Okay, jadi sebelum kita berbicara tentang itu, kita perlu tahu bagaimana pengalaman Anda menjadi...

...pengalaman software engineer, jadi GDE, dan jadi Googlegler. - Ah, oke.

- Cerita sedikit tentang Anda. - Ceritanya.

- Beberapa tahun lalu, ketika saya memutuskan apa yang perlu saya lakukan setelah sekolah tinggi, saya seperti...

...sebab saya datang dari keluarga yang cukup kurang, tidak kaya. Jadi, ayah saya tidak bisa...

...mengerti saya untuk belajar lebih lanjut, jadi saya mulai belajar setelah form 5.

Saya tidak tahu, di Indonesia, apakah Anda menyebutnya form 5 seperti sekolah tinggi?

Kemudian saya berpikir, jadi apa sekarang? Apakah saya keluar dan belajar atau belajar?

Dan hasil belajar saya cukup bagus pada saat itu. Dan kemudian ada sekolah ini.

Mereka memberikan doa, bukan hanya doa, mereka memberikan doa dari pemerintah...

...tapi mereka membuatnya sangat mudah untuk dilanjutkan. Dan mereka juga seperti...

...dalam aplikasi, mereka akan menambahkan uang hidup dalam doa juga.

Jadi, jika saya pergi ke sekolah itu, saya akan mendapatkan uang hidup...

...dengan uang hidup untuk bebas, sehingga saya mulai bekerja dan menerima balas.

Jadi, sebab saya bergabung dengan IT adalah kerana saya mengambil uang hidup.

Jadi, uang hidup adalah tentang bisnis dan IT. Jadi, setengah waktu saya belajar tentang...

...accounting, dan setengah waktu saya belajar IT, seperti programming.

Saya berada di BB6 pada saat itu. Sangat lama, sekitar 13 tahun.

Kemudian saya menyadari bahwa saya suka programming. Jadi, ketika saya mengulang...

...semua klien saya melakukan kerja bisnis. Tapi saya merasa saya ingin melakukan programming.

Kemudian saya mulai mencari pekerjaan programming. Jadi, pembicaraan pertama saya agak kurang bagus.

Itu pengalaman yang saya ingat seumur hidup saya. Pada saat mereka beritahu saya, "Oh, apabila saya...

...menginterview, mereka tanya saya, "Oh, kamu tahu C#?" Karena di sekolah saya tidak belajar...

...tentang C#. Jadi, saya pikir itu berarti C++. Kemudian saya bilang, "Oh, saya hanya belajar...

...tentang C++ sedikit di sekolah. Apa maksudmu?" Kemudian mereka bilang, "Tidak. Kamu tidak...

...benar-benar tahu tentang C#. Bagaimana kamu menjadi programmer? Mengapa kamu...

...menjumpai untuk menginterview?" - Oh, tidak.

- Ya. - Oh, begitu.

- Ya, dan kemudian... - Sangat menarik.

- Neoma, saya tidak tahu apakah perusahaan itu masih berhasil.

- Sudah. - Kemudian setelah itu, saya...

- Sangat menarik. Jika kamu datang ke perusahaan sebagai Googler dan kamu bertemu...

...pembicaraan lagi, "Hai, Gane. Kamu ingat saya?" - Ya.

Kemudian setelah itu, saya... Pembicaraan pertama saya adalah orang yang sangat baik dan mereka...

...mengatakan bahwa jika kamu ingin belajar, maka kami memiliki kesempatan untuk kamu.

Kemudian, itu bagaimana saya mendapatkan pekerjaan pertama saya dan...

...saya melakukan dengan baik dalam pekerjaan dan saya mendapatkan promosi...

...untuk duit juga. Ya. - Ya, oke.

- Ya, jadi pekerjaan pertama saya adalah Rp 1,500 untuk setahun, jadi...

...itu agak rendah dari awal. Rp 1,500. Jika kamu pikirkan sekarang, itu sangat sedikit.

Tapi dalam satu tahun, saya dapat Rp 3,500. Ya, jadi ini adalah sedikit...

...detail tentang... - Jumping stone.

- Ya, saya tidak menjumpai perusahaan, tetapi ada perusahaan yang meminta saya menjumpai.

Saya memutuskan bahwa saya tidak menjumpai, tapi teman lain beritahu bos saya bahwa seseorang...

...meminta saya menjumpai dan dia menghargai bahwa saya tidak menjumpai.

Kemudian dia menambahkan salar bagi masyarakat. Ya.

Jadi setelah itu, setelah bekerja beberapa tahun, saya dan kawan saya...

...kita memulai women who code di Malaysia, karena di dunia kami biasanya seperti...

...di ruang yang sama atau di semua perusahaan yang saya sertai, kebanyakan...

...tentang satu perusahaan, satu perusahaan adalah 80 software engineer, hanya ada 2 female engineers.

Saya dan yang lain, dan kami berdasarkan lokasi yang berbeda.

Satu adalah Malaysia, satu adalah Sydney, jadi kami berdua tidak memiliki teman lelaki.

Kemudian suatu hari, kami berkata, "Oh, apakah kami memiliki tempat untuk menemui...

...pembangunan femail lainnya?" Kemudian kami berkata, "Oh, oke, kita akan mencari online.

Ada ini woman who code, yang berasal dari San Francisco dan mereka bilang...

...yang anda boleh memulai satu." Kemudian saya dan kawan saya, waktu itu kami...

...memulai perjumpaan, dan itu cara saya perlahan-lahan memulai komunitas...

...dan berbicara, berkongsi, berkongsi teknikal secara publik.

Karena secara inisial, kami tidak tahu bagaimana untuk menemui pembicaraan.

Jadi kami menjadi pembicaraan sendiri, dan kemudian perlahan-lahan kita bisa menemui...

...pembangunan femail lainnya. Dan kemudian setelah itu, grup GDG...

...mengetahui bahwa mereka membutuhkan pembicaraan femail di komunitas mereka...

...dan mereka akan menghubungi kami juga, kemudian kami melakukan kolaborasi.

- Dan itu bagaimana saya dapat mengetahui Google. - Henry? Itu saat anda bertemu Henry?

Ya, dan semua yang lainnya. Sebenarnya perjumpaan pertama GDG...

...yang saya bincangkan adalah di Penang, Georgetown, diorganisasi oleh Win.

Dan kemudian setelah itu, saya dapat mengetahui Shaw, Mama Shaw.

Mama Shaw adalah Google, dan dia berkata, "Oh, kenapa tidak seperti kamu?"

"Sebab kamu melakukan banyak sharing juga." Dan pada saat itu, saya juga mulai menulis untuk beberapa blog.

Jadi ia dipanggil... Saya lupa namanya sekarang, tapi ia dibawah.

Ini adalah blog web yang sangat popular di Amerika. Dan kemudian mereka dibawah oleh Digital Ocean.

Jadi jika anda mencari nama saya, artikel saya itu sedang berada di bagian dari Digital Ocean juga.

- Scott.io saya pikir? - Ya, Scott.io.

Dan karena mereka membayar juga, jadi di mana-mana yang anda gunakan artikel...

Ya, mereka membayar per artikel. Jika diadakan dan diadakan, kita dapat membayar.

Dan artikel itu mendapatkan beberapa juta rupiah, saya pikir.

Jadi itu cara saya menggunakan... Ini adalah pengalaman yang saya gunakan untuk menggunakan Angula GDE dan Web GDE.

Dan kemudian perlahan-lahan... Ini sebenarnya membuka kesempatan saya banyak.

Karena saya tidak pernah berpikir bahwa saya akan pergi ke Amerika atau area lain.

Bahkan saya berbicara di negara lain juga. Saya tidak tahu jika ini mungkin.

Jadi dengan semua kesempatan ini, saya mulai berbicara.

Saya juga mulai menguruskan konferensi. Karena saya sangat suka Angula pada waktu itu.

Jadi ketika saya pergi ke konferensi di luar negara, saya lihat bagaimana mereka menguruskan konferensi dengan baik.

Kemudian saya menguruskan duit saya sendiri dan menguruskan konferensi Angula Malaysia.

Dan saya menjemputkan seorang pembicara dari luar negara juga untuk berbicara.

Dan juga seorang pembicara dari kawasan.

Seperti kita ada seorang pembicara dari Thailand untuk berbicara juga.

Karena saya tidak ingin konferensi hanya "porang putih".

Jadi saya ingin ada seorang pembicara dari kawasan juga.

Jadi saya menggunakan seorang pembicara dari kawasan.

Jadi semua ini saya lakukan ketika saya seorang pembicara dari kawasan.

Pada waktu itu saya seorang pembicara dari kawasan.

Seorang pembicara dari kawasan di Randstad, salah satu dari syarikat saya.

Dan setelah itu saya memutuskan.

Kemudian setelah itu ada kesempatan ini yang akan terjadi.

Yang adalah developer Chrome Dev Tools.

Selepas kita memiliki CDS 2019, kan?

Ya, jadi saya melakukan interview semasa CDS 2019.

Jadi ketika saya pergi ke konferensi.

Saya ingat anda pergi melawat dengan Henry all over US?

Ya, ya, ya.

Ke Grand Canyon?

Anda pergi ke Grand Canyon, kan?

Ya, ya, ya.

Saya ingat cerita itu, ya.

Ya, dan setelah itu mereka lanjutkan perjalanan.

Tetapi karena saya memiliki interview.

Jadi saya harus terbang awal untuk interview.

Sebenarnya, sehari sebelum CDS.

Karena semua kumpulan tim Death Rail sudah siap untuk CDS.

Jadi saya melakukan interview di US.

Tapi kemudian role itu dikonsumsi.

Atau di London atau di Jerman.

Jadi kemudian saya memilih Munich karena saya sudah datang ke Munich sebelumnya.

Karena kerja sebelumnya.

Dan saya merasakan keseluruhan ini.

Saya suka berada di kota kedua.

Bukan kota utama seperti Jakarta.

Seperti KL, kota besar.

Munich lebih kecil.

Agak seperti Penang di Malaysia.

Jadi saya ingin mengalami itu.

Itulah kenapa saya...

Ketika saya mendapatkan pekerjaan, saya memilih untuk datang ke Munich.

Ini adalah tempat kembang Death Tools Engineer Base.

Jadi kebanyakan engineer base di sini.

Oh!

Sangat menginspirasi.

Dan saya berada di sini selama 3 tahun.

Jadi tahun pertama, saya hanya fokus ke Death Tools.

Tapi sekarang jangkauan kerja saya lebih jauh.

Ia menjadi seperti debugging dan testing.

Oh!

Itu ceritanya.

Mungkin selanjutnya saya akan menjadi ketua GDE.

Oh!

Oh!

Oh!

Ecosistem web.

Semoga saja.

Semoga saja, iya.

Tugasmu sekarang...

Tugasmu sekarang adalah Death Rail, kan?

Iya.

Apa...

Apa...

Apa pekerjaanmu?

Apa pekerjaanmu?

Apa yang telah kamu lakukan?

Apa yang telah kamu lakukan?

Apa yang telah kamu lakukan?

Atau...

Oke.

Kamu hanya...

Ya.

Ada...

Jadi, untuk Death Rail, ada banyak...

Like, Death Rail adalah sedikit dari segalanya.

Jadi, saya bisa memberi kamu idea general.

Kita perlu mengajarkan pembangunan.

Tentang apa yang baru dan bagaimana untuk menggunakan bahan-bahan.

Jadi, dalam kes ini, seperti Death Tools dan Web Driver By Die.

Saya perlu seperti...

Menciptakan narrative dan berpikir seperti...

Atau mungkin seperti menciptakan demos.

Untuk menceritakan pembangunan bagaimana untuk menggunakannya.

Dan pada saat yang sama, saya juga perlu...

Menciptakan tim internal juga.

Seperti untuk berbagi dengan mereka...

Bagaimana sebenarnya pembangunan melakukan hal.

Karena perusahaan Chrome tidak membutuhkan pembangun web.

Pembangunan web, ya.

Ya, mereka benar-benar bagus di C++.

Seperti...

Seperti sebelumnya.

Tapi mereka tidak benar-benar bagus di CSS.

Seperti, mereka tidak...

Kadang-kadang ada...

Mereka tidak membutuhkan web.

Mereka tidak membutuhkan web.

Mereka tidak membutuhkan web.

Mereka bukan penggunaan...

Ya.

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Tidak.

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Mereka bukan penggunaan...

Css, kamu harus melalui...

Css, kamu harus melalui...

Css, kamu harus melalui...

Css, kamu harus melalui...

Css, kamu harus melalui...

Css, kamu harus melalui...

Css, kamu harus melalui...

Css, kamu harus melalui...

Css, kamu harus melalui...

Css, kamu harus melalui...

Css, kamu harus melalui...

Css, kamu harus melalui...

Css, kamu harus melalui...

Css, kamu harus melalui...

Css, kamu harus melalui...

Css, kamu harus melalui...

Css, kamu harus melalui...

Css, kamu harus melalui...

Css, kamu harus melalui...

Css, kamu harus melalui...

Ya, jadi aku hanya bekerja dengan fitur DEV2 dan API Puppeteer dan sebagainya.

Saya faham.

Ya.

Oke, sekarang kita ingin mengubah topik kita ke topik utama adalah...

Otomation.

Part meeting.

Part meeting.

I/O.

I/O.

Ya.

Jadi sebelum kita pergi ke pemandu web by Dai, mungkin kita bisa berbicara tentang evolusi otomasi tes.

Hmm.

Oke.

Ya.

Oh, boleh saya?

Apakah itu mungkin untuk saya untuk berbagi screen?

Ya.

Ya, ya.

Tentu.

Sangat mungkin.

Oh, tolong.

Ya, tapi Riza harus menambahkan screen anda ke...

Ya.

Atau kamu bisa menggunakan saya?

Seperti ini?

Ya.

Tunggu, bagi saya.

Oke.

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Tunggu, bagi saya.

Seperti ini?

Ya.

Ya, oke.

Tunggu, saya perlu menyalakan WebDriver by Die untuk beberapa menit.

Mari lihat.

Coba lagi.

Dan ini juga.

Ini juga.

Karena ini.

Biar saya runa satu lagi.

Oke.

Berapa banyak browser yang anda punya?

Saya lihat.

Mengapa terbuka 93 browser dan kemudian berhenti?

Oke.

Oke.

Mari kita coba lagi.

Oke.

Mari kita coba Firefox yang ini.

Ya.

Oke.

Oke.

Lihat, ini adalah bagian yang menyenangkan.

Live recording.

Biar saya coba.

Bagi ini.

Dan letakkan ini.

Untuk sekejap.

Oke.

Biar saya coba.

Saya punya video jika tidak berhasil.

Oke.

Banyak.

Ya.

Oke.

Firefox.

Tidak.

Tidak ada kapasitas yang sepadan.

Tidak ada kapasitas yang sepadan.

Saya telah mengambil sesuatu yang bagus.

Saya tidak menyalakan barang?

Atau saya...

Bisa menyalakan barang?

Tidak.

Oke.

Tunggu.

Satu kali terakhir.

Saya memiliki...

Saya memiliki demo lainnya.

Oke.

Siapa?

Itu hal yang sama.

MPM, run.

Oh, ini adalah script tes, kan?

Ini bukan script type.

Ini juga JavaScript.

Tidak.

Maaf.

Script tes.

Bukan script type.

Ini adalah script tes.

Ya, ya, ya.

Jadi ini seperti...

Saya memiliki test runner dan test framework juga.

Yang lain, saya tidak memiliki itu.

Jadi, biar saya run MPM, run WDIO.

Oke, yang ini.

Oke.

Ini juga tidak berfungsi.

Jadi, yang ini run Safari.

Oke.

Jangan run Safari.

Saya akan menunjukkan di file konfig.

Oh, Safari.

Ini Safari.

Bagus, kamu bisa konfigurasi.

Oh, ini Safari.

Ya.

Karena ini seperti web driver yang saya miliki.

Saya bisa konfigurasi.

Sebenarnya, saya bisa run multiple service.

Tapi saya hanya mahu run seperti ini.

Oh, wow.

Biar saya lihat jika saya ada lagi...

Ya, di atas.

Ya.

Seperti itu.

Oke.

Oke, mari kita coba.

Oke, jelas.

Oke, jelas.

Ya.

Oke.

Oke.

Ya.

Jadi, ini bukan itu.

Jadi, apa yang saya ingin menunjukkan adalah...

Biar saya menunjukkan...

Apakah saya punya...

Postman?

Ini laptop baru saya.

Jadi, saya punya...

Oke.

Jadi, apa yang saya ingin menunjukkan adalah...

Saya punya...

Jadi, sekarang, jika...

Biar saya...

Biar saya...

Ya.

Jadi, apa yang saya ingin tunjukkan adalah...

Jadi, apa yang saya ingin tunjukkan adalah...

Jadi, apa yang saya ingin tunjukkan adalah...

Jadi, apa yang saya ingin tunjukkan adalah...

Jadi, apa yang saya ingin tunjukkan adalah...

Jadi, apa yang saya ingin tunjukkan adalah...

Jadi, sekarang, jika...

Biar saya...

Biar saya...

Biar saya...

Biar saya...

Biar saya...

Biar saya...

Biar saya...

Biar saya...

Biar saya...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Ya.

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Jadi, apa yang saya ingin...

Right?

Chrome DevTools Protocol.

This name actually tell you that it's actually initially designed for Chrome DevTools.

Yeah.

For Chrome DevTools like to help you to inspect your page, to debug your page.

It's not initially designed for like testing.

But slowly people just realize, "Oh, Chrome DevTools Protocol is so powerful, we can actually use it for testing as well."

So that's when people...

That's when we come up with the idea of Puppeteer and we publish it.

So for CDP, it's different from the web driver.

There's no browser driver in between.

There's no middle person.

So your automation tool help directly to Chromium-based browsers via the Chrome DevTools Protocol.

So you issue the command via the CDP and you control the browser via WebSocket instead of HTTP.

You use WebSocket in order to do so.

So for example, given the same script, if you run it with Puppeteer, you open a new page, you set the viewport, you go to the page.

So I will show you how this command will translate into CDP.

So we can go to a new page with the CDP.

And to test CDP, you can actually use...

Let me see if I have the script here.

Because I need to...

I have some script.

Oh, no, I don't have it here.

Do I save it somewhere else?

Give me a second.

I need to get the script.

Just a moment.

I just need to get...

The JSON script, right?

Yeah.

Not the JSON script.

Okay.

Never mind.

Let me just show you how it works.

So in the Chrome DevTools, what you can do is that you can go to this More Tools, and you can go to this Protocol Monitor tab.

So you can open it.

I don't know this.

There's a lot of tools.

A lot of tools.

So if you don't see it, because this is an experimental feature, what you need to do is that you go to the Experian.

Turn on the protocol monitor tab in order to turn on that.

And then after that, you realize every action you do on the page, like in DevTools page on the page, it will generate some sort of a command here.

So this is basically the CDP command.

This method, this is something that we call is a CDP command.

So let me see. So for example, if we let me go to a blank page first.

Okay.

What?

Oh my.

Let me start recording.

So if I go to like a coffee page, a coffee card page, and I stop the recording, from here I can see that there's a page.navigate event.

Page.navigate command.

So what I can do here, I can actually issue a CDP command called page.navigate.

And then, because I need to like command, I usually have a short version like the command.

And then I need to send in the parameters.

Parameters.

And then I send in like the URL.

So it's in regular JSON format.

Yes, this is a regular JSON format.

So I need to like, let me see if this.

So let's go back here.

And then if I run this, let's see.

You need to close the curly braces.

Oh yeah, you need one more curly braces closing.

Oh yeah, you are right.

This is a linter.

Let me also like check, so I have another page.

So page.navigate.

Okay, I remember it quite correctly.

But what I need to do is that I need to run a JSON.stringify.

I think the JSON could be like capital letter, right?

Yeah, capital letter.

So I need to like copy this line of command.

And then come back here, put it here, run it.

No, no, no.

Why, why, why, why?

Oh, it's the capital P.

So this is like the command.

So it's like, if you think of it, it's actually similar to your HTTP.

But it's like the command is writing in a different way.

So this is what powers the Chrome DevTools recorder, right?

That's how it can work.

We can import and export the Chrome DevTools recorder feature, right?

No, the Chrome DevTools recorder, behind the scene we are using Puppeteer.

But Puppeteer behind the scene is using this protocol to control the browsers, to automate the browsers.

Okay, and this use WebSocket protocol, right?

Yes, that's why you need to be like it is a string and I think because it is WebSocket and you cannot have a long string in there.

Okay, got it now.

So like go back to, yeah, okay, live coding is partially success, good.

So if you want to know the command that runs behind the scene, you can run like this, navigate like go to this page.

Find the coffee, like evaluate with the story selector and you can click on the coffee.

Like clicking on the coffee is like you need to like dispatch a mouse click like press on it and then you need to release the mouse.

So like press and release is like two actions in like in CDP command.

And then usually every time when the browsers like when the browsers will wait for the coffee.

For example, this fine coffee, the browser will wait until they get the response and then send the response back to the automation tool.

The automation tool doesn't need to do like long polling because it just doesn't need to use WebSocket.

Yeah, so the automation tool can subscribe to the to the event and then just wait until the event finish, the browsers will notify like to the.

Yeah, since it's a WebSocket connection, I think it's a keep alive.

So the connection is still still live during this session.

That's why it's faster. Yeah, all right.

And just now I think I missed a slide.

So if you want to like see if you run if you use Puppeteer, you run the script.

If you want to see that what are the CDP command running behind the scene, you can turn on these these settings before it.

You can use this put in like debug Puppeteer protocol and you just want to see the same protocol and then you run your script.

It will just show you a list of CDP command that is getting caught during the session.

If you want to like debug what you want to know exactly what are the protocols behind the scene.

Yeah, so you can use that.

If you compare like CDP and the WebDriver Classic, so CDP can have like low level control because it's using WebSocket.

It can intercept the network request.

So intercept is very important in like nowadays when we do test automation because you want to mock the API.

You want to mock some of the API.

And in WebDriver Classic, it's very hard for you to mock it because there's there's no way for you to mock it.

So mock it is HTTP.

And then in CDP, you also can simulate device mode.

Like for example, you can say that you want to use a mobile device mode without actually needing a actual live device.

And you can also simulate the geolocations.

So basically whatever you can do in Chrome DevTools, you can use sort of this CDP in order to do that.

And also you can get the console messages as well.

So for WebDriver Classic, it cannot support like this low level control just because of the limitations.

And yeah, so in summary, CDP is like fast.

It's bi-directional.

It has low level control, but it is not a standard like the Chrome, the Chromium, the Chrome and the Chromium team.

When one day really we think like we should change a certain API, we can just do so.

But for WebDriver, it's the standard.

So everyone in the standard need to agree on a certain standard.

Then only you can do the changes.

Yeah.

So and also like the CDP is like slightly complex, like the API is not that friendly because it's built for testing.

So like in just now this example, like in the coffee, you can see that it's like two mouth press and release.

Like there is no click event that you can just click on it.

You need to like press and release.

So like sometimes like this, this API is designed for testing, fine grind control.

That's why it's slightly complex compared to compared to WebDriver.

So now that we have no like both like then we are thinking like how can we improve like cross browser automation fundamentally,

like not just Chromium browsers that you can automate, but you can automate in like all the other browsers as well.

So if you take like the good thing about CDP, which is fast and low level control, and you have WebDriver classic,

you can build for testing like the W3C standard and all the major browsers support it.

You combine it, then that's why we come up with another like standard is called WebDriver by die.

It's a cross browser automation protocol that built using WebSocket.

So now that we learned that we know that we know that in test automation we need like to mock API,

mock the network request and to simulate like device mode, like get console messages like all this.

Then this thing need WebSocket so that then we need to like come up with a new standard so that this standard,

this W3C standard should be implemented in not only Chromium browsers, but as a standard to all others browsers as well.

So that's what the WebDriver by die is for. So it's a work in progress.

So it's not so when we talk about standard, which means that we have like multiple major browsers collaborate together.

To come up with, to decide like what are the, so like for example, just now we go through this WebDriver spec, right?

So we have a WebDriver by die spec as well. So everything is in the public, like even the meeting notes.

And then from here over here. And then from here like how do we handle errors and how do we handle like a certain API?

And how should we call a certain event? Like what is a by die sessions mean?

Yeah, so there is a lot of like discussion on how like what are the commands it should be defined and all.

You need to define the same command across browser, right? Like what is click, what is mouse scroll and so on.

Yes, correct. And not only the browsers, the automations too need to be able to involve in the discussion as well.

Because they are the ones who know the automations like the tester and the automation tester the most.

Because they know how like the API should work and they have the experience.

So like Selenium and WebDriver IO, they are in part of the collaboration as well. As well as like testing provider like browser stack and source lab.

It's also like in part of the discussion on to shape the WebDriver by die spec.

Okay, then what does it take like to implement a new protocol, right? A new standard.

So it means that we have we need to have this like specification process like this is a RFC process like maybe someone in the Chrome team or someone in the Firefox team.

We propose something, then we need to like write down like sort of the spec and then ask for like everyone opinions.

So everyone like give in their comments and then do a discussions.

And then when everyone agree and then we go to the verification state, which you need to create a set of tests.

And this WebDriver by die like the build PT, we call it Web Platform Test.

So this test is implement in Python and this test is meant to be the same test can run in can run in different browsers.

And I click on the link like this same set of tests.

That's how you we make sure that the features is work across the different browser because you are using the same test, not like everyone create like a different test.

Ya, ya, ya. Nice.

Ya, sekirasin buat temen-temen yang lagi nonton.

Mungkin dulu sebelumnya kita pernah bikin episode tentang interoperability.

Nah, itu kita cukup banyak bahas Web Platform Test, tapi itu kan untuk web API yang kayak CSS, JavaScript.

Nah, itu ini ternyata WebDriver by die juga ada Web Platform Testnya juga.

Nah, kalau yang pengen lihat lebih jauh lagi tentang detail proses-proses di Web Platform Test, bisa cari episode entah berapa.

Let's continue.

Ya, then we go through the test and then the last thing is the implementation to pass the test.

And for the implementation, we have a dashboard.

So you can come to this dashboard to see like all each of the browsers like how many tests fail, how many tests pass.

And you can see that even Safari has some progress.

Yay!

Chrome and Edge and Firefox. Actually Firefox has the best progress overall.

Oh wow.

It passed almost all the tests like Chrome and Edge like it's also like not bad.

And you can see like this result is as of like March, I have one like go in and check again like the latest progress.

Yeah.

Okay. And then after that, now we already like added like some initial support in the in the automations to like Puppeteer, WebDriver, Selenium.

If you use them, there are some initial support which is already available.

So for example, the same use case just now when we get a page click on a coffee, what you need to do sometimes is that you want to catch the console error.

So wherever you want your test is like you want to assert that there's no console error throw in the in the in the console.

Like for example, you might have some additional process, additional API to call like your your analytic API or some API to do every testing that might feel behind the scene that you do not know.

So you might have some some case you want to catch the console error.

Previously, it's not possible with WebDriver.

But with WebDriver by die, you you are able to do so.

And what you need to do is that just now in the in my script, when I launched the browsers, I need to pass in the WebSocket URL, set it to true.

And then after that, I can set the browser's name to Firefox or to Chrome, which is already supported.

And then I can start monitoring the log message.

I can say that when the I can subscribe to the session and then I subscribe to this event like log entry edit event.

So wherever the browsers receive this message, I will I will see that I will see that if there's there's a message like sent to me, I will just assert it failed because I don't expect any message.

So with WebSocket and WebDriver by die, you can do that because you can subscribe to the WebSocket method.

Nice.

Yeah.

Nice. So you just we just listening events like.

Yeah, because in WebSocket, it is an event driven way to even driven.

It's always open.

Yeah.

Connection.

Yeah.

Yeah.

And then like like this, like so you have load like this is the one first use case that we we we unlock that even more.

So if you want to check out what is the WebDriver by the roadmap, you can click on this thing to check on the roadmap.

And the good thing is that WebDriver Classic WebDriver by that is not to not really to replace like WebDriver Classic.

They can interoperate with each other.

So if you're if you're you're you're you're ready to change it.

All right.

You can add like WebSocket the WebSocket URL and it will work.

Yes.

So in Puppeteer, it is the same.

So you can check the demo, learn more in this link and you can check the demo as well.

And yeah, it's also if you want to like support the project, you can like give it a test and then you can share about it about the project.

And you can if your favorite frameworks, for example, if you're using some others testing framework, you see that there's no bidirector support yet.

You can also ask them or send a file issues or an issue to ask them, hey, are you implement like the bidirector support yet?

We also like talk to some of the automations too.

But if you you as a user asking them, then they know that all there is a need, then they will like prioritize that even more.

Yeah.

And you can learn more about the project.

Yes.

Yeah, that's that's all about the thing.

What's the one last thing?

There's two last things.

Yeah.

So like for the testing stuff, we this is not like WebDriver by that, but it's generally testing.

We have a new headless mode in Chrome.

So previously, the headless mode in Chrome is a it's like it's a tool is a two different kind of like implementation.

So you thought that when you run headless mode, which means that you don't see the UI behind the UI and implement the same thing, right?

It's actually not.

Oh, no, it's actually not previously.

It's actually like two different set of code you are running executable.

Yes. Now that we merge them to become like really just hide the UI and the back end.

Actually one engine.

Yes, the same engine.

So you can read more about it.

And this actually helped to solve a lot of like some weird issues when you print like PDF or some canvas when you work on that.

This actually solve some of the testing issues that currently people have.

And the other one is the recorder. So you can like go to the recorder panel to record the test within the Chrome DevTools itself and export it.

Yeah.

But I think we are a bit slightly over time.

Yeah, it's fine.

Yeah.

Oh, yeah.

Very interesting.

Okay. I have a question. Is create your own memes in your job description?

No, not my job description, but I just feel like it would be kind of fun.

Like sometimes the meme.

Risa is going to adopt it in his next show.

We need that. Yeah.

There is an interesting question.

From Fauzi.

It was an interesting demo, of course.

And I have a question.

How do you maintain the automation code with several different test scenario?

Maybe the context is like there is a session shared or something like that.

So you mean in the context of WebDropbyDrop in general, how do we maintain the automation code with several different testing scenario?

I don't quite get the question.

The life code you did is the testing one, right?

Yes.

Describe and test something.

Maybe he was Fauzi asking about different scenario, how to maintain the login, cookie, something like that.

Yeah, like continuously testing different scenario across the platform.

Or maybe, I don't know what the original question refers to, but possibly like different scenario.

Can you add to cart as a locked in user, as an authenticated user?

Or maybe you do the same action, but as a guest, then you have different assertion.

Maybe like there should be a pop-up asking to login first or something like that, maybe. I don't know.

I think...

Fauzi, you still there? Please elaborate more.

I think I know. I think it's different case of here.

So in this case of testing scenario, I think it's usually used in end-to-end testing.

And its scenario is on-session. So it execute one scenario from beginning to end.

And again, close the browser, create another session, test another scenario.

So it's not going to be mixed actually. So it has to be like end-to-end.

And usually end-to-end testing is based on a business use case.

So if it's a block, can it run, write a block from beginning and until the article is published.

Or if it is a login, just execute the login and that's it.

So it's a different session.

Actually it's an interesting question. So it's actually how you structure your...

How do you maintain different scenario like if you...

Some of the flow you really need to log in and then continue.

How do you automate the end-to-end test? Do you every time run, create a new user and then you log in and over and over again?

I think this really depends on how you structure your test and your...

You know that there's a test pyramid and there is different way of testing.

Maybe if you have your unit test to test most of your function like the add to cart.

The modular one.

Yes, the modular one. And you know that there is definitely successful already.

What you want to test at the end, you don't need to test the set path, the field scenario.

Maybe you have 10 field scenario and 2 successful scenario.

But what you want to test in the final end-to-end test, end-to-end test usually the top is the last one.

So what you need to test, you don't need to test like 10 field scenario and 2 successful scenario.

What you need to test is that is everything like this flow working?

Maybe you just pick like one or two scenario to test like end-to-end.

Because you have all the other stuff like covered at the unit test which can run even faster because you don't need to launch a real browser to run it.

So if you have that to cover your base and then your end-to-end really means like you...

...from register to log in and then to add to cart and to successful.

Maybe this is just one test that you are doing.

Instead of like doing the 10, like repeating what you need to do in the unit test or you just skip unit test and do this.

I think like this is not the way because it's slower.

Don't have too much end-to-end testing otherwise it will burn your GitHub action budget.

Yes, correct.

I think we just have to go now.

Because in Munich you still in working hour, right?

Thank you so much for coming.

Thank you so much for chatting with us.

Thank you for hosting me.

Maybe see you another episode maybe.

Thank you. Bye bye.

Thank you. Bye.

Kita mau lanjut, Nak?

Ya boleh. Kita ada beberapa pertanyaan. Kita selesaikan pertanyaannya.

Kita selesaikan.

Oke.

What language? Sepertinya C+ ya?

Pasti low-level language. Cuma kita nggak tahu apa.

Karena bukan kita yang ngulis.

Terus, oh ya kita kan punya temen juga nih yang kerjanya adalah engineer browser.

Iya, si...

Rakinah?

Rakinah, iya, iya, iya.

Oh iya, iya.

Keren gak ya?

Mudah-mudahan ya.

Coba kita tanya Rakinah.

Kalau masih, semoga.

We love that CDP is easily readable and we can check action.

Ya, betul, betul. Setuju, setuju.

Kita pakai bahasa Indonesia aja sekarang ya. Capai juga bahasa Inggris.

Iya. Tapi bagus kalau ini ya.

Jadi...

Keren sih.

Iya. Kedepannya...

End-to-end testing akan semakin mudah.

Betul. End-to-end testing.

Semakin jepang juga pasti.

Web scraping juga semakin mudah.

Web scraping juga semakin gampang.

Terus import, export, itu gampang kayak apa sih, komen-komennya.

Tapi kan semua bisa di-export.

Itu kan JSON doang ya, ya udah bisa di-share lah.

Misalnya kita punya project, ya kita punya team, atau apa.

Kita bisa men-streamline proses, kayak proses-proses end-to-endnya itu kan.

Dengan karakter...

Iya, jadi lebih transparan di belakang layar ya.

Jadi bisa lebih mudah didibug juga.

Dan apa, nggak vendor log-in gitu sama tooling kan, maksudnya mau kita pake testing tools apa.

Kalau udah ada standar thing streamline dan format yang kayak library agnostik,

itu kan lebih memudahkan kedepannya.

Iya. Wah seru ya.

Ini Fauzi, pertanyaannya sudah terjawab belum ya?

Kalau belum, kita bahas lagi aja.

Iya bahasnya sama kita gitu.

Soal tau aja kita.

Pengalaman pakai end-to-end testing kan, kayak pakai Cypress itu.

Kita jangan tes apa yang bisa kita tes dengan unit testing.

Nggak ada gunanya misalnya ngetes contohnya ya.

Komponennya ke-render apa nggak, alert-nya misalnya kayak FOB.

Kalau nggak ada isinya, muncul nggak log-in test-nya.

Itu nggak perlu pakai end-to-end testing.

Karena itu bisa di handle pakai unit testing.

Jadi nggak perlu.

Ini kayaknya ada di Ken C. Dots itu loh.

Beliau bikin artikel apa sih, testing Trophy ya.

Testing pyramid.

Testing pyramid, iya.

Itu cari sendiri.

Itu penjelasannya bagus sih, maksudnya tentang area-area wilayah-wilayah.

Bukan pyramid dia, testing Trophy kalau si Ken C. Dots.

Oh bener, gua bilang Trophy tadi.

Iya, kalau testing pyramid itu si Martin Rauler.

Ini awalnya ada di sini ya.

Originalnya ini.

Mana dia?

Kayak interpretasinya dia buat web testing.

Om Martin ini banyak banget ini teorinya ya.

Testing Trophy ya.

Kita undang ya gimana.

Memang bisa, emang kenal.

Kenalan lah, nggak kenal nih.

Kenalan.

N2N itu paling atas.

Jadi apa yang bisa di tes sama yang bawa-bawa.

Bawa aja, lebih cepet soalnya.

Iya.

Kalau nggak perlu N2N ya unit testing cukup.

Ya udah, unit testing aja.

Karena semakin ke atas itu semakin mahal.

Semakin expensive.

Bahkan M1 aja bisa jadi F1 kan.

Apalagi yang Intel ya.

Kalau Intel jadi drone.

Jadi drone dia tau.

Jadi drone terbang.

M1 aja udah jadi F1.

Nah biasanya kalau N2N itu lebih ke arah business critical.

Kalau saya implementnya di tim.

Jadi apa yang penting, contoh kalau e-commerce.

Make sure add to cart sampai check out berhasil.

Itu kan business critical ya.

Jadi jangan sampai ada regression.

Kalau testing misalkan CSS-nya warnanya merah.

Atau kalau misalkan error itu warnanya merah.

Atau warnanya kuning.

Itu visual testing.

Beda lagi ya.

Itu bisa pakai visual regression testing.

Bisa.

Itu kalau yang terkenal sih, Chromatic itu perusahaannya.

Perusahaannya yang bikin storybook.

Ya kalau storybook kan open source kan.

Itu library open source yang bisa dipakai.

Tapi Chromatic tuh bayar ya.

Itu service ya.

Kalau mau...

Oh ada free tier-nya kok.

Ya itu ada free tier-nya ada.

Ada free tier.

Soalnya gimana ya visual regression testing.

Itu juga yang di-test.

Sebaiknya yang business critical juga sih.

Bayangin deh, logikanya misalnya post berita.

Kalau cuma geser 1 pixel atau apa.

Kayaknya nggak se worth it itu ya.

Buat set up testing sendiri.

Tapi kalau misalnya ada apa yang hilang atau ketutupan.

Ya mungkin itu...

Ada yang free-nya.

Khusus untuk react ya.

Backstop JS itu bisa.

Apa-apa?

Backstop JS.

Backstreetboy.

Backstop.

Backstop.

Backstop JS.

Backstop JS.

Ini ya.

Oh bagus nih.

Ini udah ada.

Oh ini juga pakai playwright dan property ya.

Jadi coba ke GitHub-nya aja.

Ke GitHub-nya aja ada screen-nya.

Ada screenshot-nya maksudnya.

Jadi bisa lihat comparison before-after aja.

Ini untuk visual regression-nya.

Nah ini khusus untuk CSS-CSSan.

Kalau untuk integration testing, ya banyak kan.

Itu bisa pakai yang test cafe.

Nah kalian ini cari perkara tuh.

Udah minta diundang Martin.

Tiki Martin maksudnya.

Nggak punya link-nya ke sana.

Boleh, boleh.

Mention aja di Twitter.

Siapa tahu dia mau datang.

Ini acara apa nih? Penasaran.

Martin.

Terus apa lagi?

Jadi temen-temen kalau testing biasanya pakai tools apa?

Ada yang pakai Cypress, ada yang pakai playwright sekarang ya.

Yang kekinian ya.

Terus apa lagi?

Kalau dulu-dulu ya tadi kan WebDriver.

Atau unit testing.

Atau masih di unit testing.

Atau nggak nge-test.

Nggak pakai testing.

Ada berani sekali.

Manual testing.

Nggak pakai QA.

Atau...

Kita sendiri manual testing kita buka.

Kita ngerti.

Pak, pakai bug driven development.

Kalau nggak ketemu bug, nggak di develop ya.

User report bug driven development.

Jadi nunggu ada error yang dilaporin oleh user.

Iya.

Iya, iya, iya.

Apa, si WebDriver ini ya tadi ya untuk memudahkan testing.

Terutama yang end-to-end.

Juga untuk web scraping juga sangat berguna.

Ini ada yang pakai debugging buat testing.

Ini gimana maksudnya?

Pakai debugger ya, pakai debugger.

Iya, pakai debugger.

Dibugger.

Itu bug driven development juga.

Cuma belum dipublish saja.

Kita harus nunggu debugnya beratikan.

Oke, kalau gitu.

Bahasan materi kita sudah mulai mengering, sudah habis.

Buat teman-teman yang mau suggest tadi kayak misalkan ini.

Mau suggest om Martin, boleh.

Silakan kita terima, kita tampung dulu.

Kalau misalkan nanti teman-teman.

Atau mau nawarin diri seperti featuring, minta tampung.

Boleh, dengan senang hati kita terima.

Kalau namanya Martin, mungkin bisa cepet.

Kalau namanya Martin, mungkin ada Mas Muhammad Martin.

Boleh suggest ke kita, nanti kita tampung.

Belum tentu diwujudkan semua, kalau bisa ya kita akan wujudkan.

Bisa ke bit.ly/ngobrolinweb.

Untuk malam ini kita udahan dulu berhubung kafenya Eka Dombu Tutup.

Jadi kita udahan dulu, kita ketemu lagi minggu depan insyaallah.

Di hari Selasa jam 8 malam, waktu Indonesia Barat.

Sampai jumpa, selamat malam, bye bye.

Ayo dadah terus, dadah terus.

Belum, belum, belum.

Mana ini bannernya?

Bannernya mana?

Kok nggak ada, oh brandnya.

Closing, closing.

Oke.

Eh, ini nggak harus nunggu upload kan ya?

Dadah.

Ya ini live.

Oke.

Bye bye.

Bye.

Ya bye.

Deskripsi asli dari YouTube

Yuk mari kita diskusi dan ngobrol ngalor-ngidul tentang dunia web. Agar tetap up-to-date dengan teknologi web terkini. Topik, tautan dan pertanyaan menarik bisa dilayangkan ke https://bit.ly/ngobrolinweb Kunjungi https://ngobrol.in untuk catatan, tautan dan informasi topik lainnya.

Episode Terkait

Bagikan:

Suka episode ini?

Episode baru setiap Selasa malam. Dengarkan lewat YouTube, Spotify, atau feed podcast favoritmu.

Pilih Cara Langganan

Memuat komentar dari GitHub Discussions...

Jika komentar tidak muncul karena ekstensi privasi / adblocker, kamu bisa berdiskusi langsung di GitHub Discussions .