 Hai, semua. Jadi saya akan memperkenalkan tentang Cafe Test. Jadi ini berdasarkan jenis hari kedua saya tentang memperkenalkan menggunakannya. Jadi saya hanya cuba untuk hari kedua. Jadi ini adalah pengalaman. Jadi, saya adalah pengalaman dari GavTech dan lagu Tech League untuk Grandspotter M.C.C.Y. Dan saya adalah pengalaman yang kuat diberi suatu kualiti yang tinggi. Kerana saya datang dari sebuah industri sejumat dan saya memperkenalkan suatu kualiti untuk memperkenalkan sebuah jenis hari kedua. Saya tentu percaya bahawa kita harus memperkenalkan suatu kualiti jadi kenapa kualiti penting? Jika tidak, kami akan buat sesuatu seperti ini. Tak bermakna, peran syakil memperkenalkan ke tengah jalan. Dan juga, jika kualiti tidak... jika orang tidak berkualiti-kualiti dan anda boleh memperkenalkan keadaan apapun keadaan tidak berbazir. So, sepuluhnya juga tak bermakna. Okey, jadi ini adalah beberapa pilihan yang saya baru-beri. Seperti yang saya telah menggunakan R-SPEC dan yang kedua adalah kerja robot. Kemudian menggantikan selenium, cucumber, api-tus, pabrethia, dan gatellin mocha, sos lap, luar rana, dan kode sat, JS. Jadi saya bercakap tentang ini. Ini adalah pilihan kron yang saya telah membuat, dan ini adalah kerja robot. Jadi ini adalah percuma-percuma sedikit untuk mencoba, apakah boleh saya membantu orang untuk membuat pesta-pesta test kripping dan membantu begitulah untuk belajar bagaimana untuk membuat test kripping mudah. Okey, jadi saya sangat gembira bahwa kerja robot dibuatkan di website kerja robot official. Terima kasih. Jadi motivasi untuk saya adalah saya mahu mencari kelembangkan kabi-bara. Kelembangkan kabi-bara adalah actually a tool we used in rails previously. Kode kita dibuat di Ruby's on Rails, dan kita menggunakan jem kode kabi-bara. Jadi kabi-bara adalah sedikit tua, dan kemudian ia berdasarkan kit Racket QT, yang juga tidak dapat menggantikan dengan baik. Biasanya apabila orang mencoba untuk menggantikan, ia akan menggantikan kelembangkan kabi-bara. Sebab itulah kita mahu menggantikan. Jadi motivasi yang penting adalah untuk mencari kode kabi-bara yang pemeriksaan dapat menggunakan untuk membuat pesta-pesta test kripping. Jadi ini juga akan berada di atas kelembangkan kabi-bara kita. Kemudian juga saya mahu membuat pesta-pesta test kripping untuk kembali lebih cepat. Dan juga membantu saya memdemohi produk kepada penggantikan saya. Kemudian kita membuat beberapa search Google, dan kita membuat dengan dua pesta-pesta test kripping. Ini adalah pesta-pesta node untuk menggantikan dan menggantikan pesta-pesta web. Jadi sesuatu pilihan adalah memuatkan multiple OS, apabila node ini mudah untuk memuatkan pakaian di Mad dan Linux. Kemudian ia juga memuatkan multiple browser, sejauh sejauh sejauh untuk memuatkan HTML5. Dan ia mempunyai banyak pilihan, termasuk concurrency, dan kita dapat memuatkan pakaian multiple untuk memuatkan pakaian di mobile. Yang penting adalah support halus, pakaian pakaian, dan kemudian ia dapat menggantikan dengan C.I. Dan sebabnya node ini sangat mudah untuk dibuatkan. Jadi saya memutuskan bahawa ini adalah tiga objektif yang saya patut melakukan untuk menjelaskan jika pesta-pesta test ini dapat digantikan untuk saya. Kemudian, saya rasa pertama-tiga, saya pergi ke web dan ikut pesta-pesta test kripping untuk menggantikan pesta-pesta test kripping pada masin saya. Kemudian menggantikan pesta-pesta kripping, menggantikan pesta-pesta test, dan kemudian memuatkan pesta-pesta test untuk pastikan installasi itu berfungsi dengan baik. Jadi, pula-pula saya membuat pesta-pesta simple saya. Jadi, tiga objektif ini dapat digantikan. Bagaimana saya mempunyai pesta-pesta test kripping? Bagaimana mempunyai pesta-pesta test kripping? Kerana ia adalah sesuatu yang saya lebih suka dibuatkan dengan pesta-pesta yang lain. Yang lain adalah bagaimana pesta-pesta test kripping berinterak dengan element. Jadi, saya membuat beberapa pesanan. Saya merenungkan bahawa pesta-pesta test kripping mempunyai selektor CSS dan mempunyai dom. S-pap tidak benar-benar mempunyai. Jadi, ia mempunyai pesta-pesta dom dengan api. Kemudian, pula-pula saya mempunyai pesta-pesta, anda dapat mempunyai klik, anda dapat menghubung. Dan, pula yang saya lebih suka adalah yang anda dapat mempunyai pesta-pesta pesta-pesta. Jadi, ini adalah pesta-pesta basic saya. Saya membuat pesta-pesta sederhana di web app saya. Ya, anda dapat melihat bahawa sebenarnya, ini sangat cepat. Jadi, saya akan mempunyai pesta-pesta. Jadi, ini adalah aplikasi yang saya akan membuat pesta-pesta. Jadi, untuk pesta-pesta pertama, apa yang saya akan membuat adalah membuat pesta-pesta sederhana. Kemudian, selepas membuat pesta-pesta, saya akan membuat pesta-pesta. Saya membuat pesta-pesta sederhana. Jadi, saya minta maaf untuk menunjukkan. Untuk pesta-pesta pertama, ini adalah pesta-pesta sederhana. Jadi, pertama, anda mempunyai pesta-pesta, kemudian anda mempunyai pesta-pesta yang akan membuat pesta-pesta, kemudian anda mempunyai pesta-pesta sederhana. Dan, semua ini berlaku pada Async. Jadi, saya akan mempunyai pesta-pesta sederhana, saya akan membuat pesta-pesta sederhana. Di sini, saya akan menunjukkan apabila saya mencari log-in, kemudian ini adalah sesuatu yang saya belum membuat. Jadi, dengan kata, api ini sebenarnya membantu kami memperoleh pesta-pesta sederhana. Anda dapat memilih jika memperoleh atau memperoleh pesta-pesta sederhana. Tetapi, di sini, saya tidak boleh memperoleh pesta-pesta sederhana. Kita memperoleh pesta-pesta sederhana. Itu sebabnya saya perlu membuat pesta-pesta sederhana. Kemudian, selepas itu, saya akan mempunyai pesta sederhana. Dan membuat log-in. Kemudian, saya akan membuat log-in. Ini adalah sebabnya pesta-pesta sederhana akan berkongsi. Jadi, dalam proses membuat pesta-pesta sederhana, saya juga mempercaya bahawa ada sebuah pesta-pesta sederhana yang menarik. Jadi, pesta-pesta sederhana membantu kami memperoleh pesta-pesta sederhana. Seperti sekarang, jika saya memperolehnya lagi. Jadi, sekarang, anda dapat melihat pesta-pesta sederhana di website ini. Jadi, pesta-pesta sederhana ini sangat menarik untuk saya membuat pesta-pesta sederhana. Jika saya memperoleh pesta sederhana, saya akan dapat membuat pesta-pesta sederhana. Dan saya akan memperoleh dan menarik apakah pesta sederhana adalah sebabnya ia tidak dapat mencari alamat. Alamat itu menginginkan atau sebabnya, mengapa ia ialah soal. Dan juga kadang-kadang, ia membantu saya untuk membuat sedikit pesta-pesta sederhana. Jadi, mari kita katakan bahawa, mungkin ia mengalami sekarang. Jadi, saya akan membuat pesta sederhana, dan saya akan membuat pesta sederhana yang lain. Saya dapat membuat pesta sederhana untuk membantu. Maksudkan pesta sederhana. Jadi, saya dapat membuat pesta sederhana. Maaf, saya perlu menyelamatkan lagi. Jadi, saya akan membuat pesta sederhana. Dan kemudian saya dapat mengambil pesta sederhana. Jadi, ini sudah membantu saya untuk mengalami dan memperoleh pesta sederhana dengan, mari kita katakan dengan pesta sederhana saya. Jadi, pesta sederhana yang lain saya ada adalah untuk membuat pesta sederhana. Dan saya menarik pesta sederhana dengan pesta sederhana tidak berfungsi. Dan perkara yang penting adalah pesta sederhana kita juga menemukan masalah tidak terlalu terkejut kerana kita menggunakan pesta sederhana. Jadi, ia sangat susah untuk mengubah sebuah alam yang benar-benar mencari untuk mengambil pesta sederhana. Jadi, ini adalah pesta sederhana. Kita menggunakan alam untuk membantu kita. Pesta sederhana yang membantu kita dengan pesta sederhana atau pesta sederhana. Tapi, semogaknya saya cuba ia tidak boleh spreadserhana seperti saya. Jadi, saya mengusikannya untuk meminatkan pesta sederhana. Pesta sederhana untuk membuat Pesta sederhana ialah adalah daripada pesta sederhana untuk membuat pesta sederhana. Bagus untuk membantu untuk menggandai pesta sederhana tidak perseguhkan. Saya tercuba memutuskan dan memerlukan 5 minit. Saya memujukkan untuk mempersiapkan You can do a record and then you can edit the element and then play it on the ID. It's quite featureful, I suppose. So I tried for 5 minutes and then I decided to give out on test cafe studio. And I decided to go by a different approach. Whether is it because that my selector is wrong, that's why I tried with a lot of different selectors and then try, do a lot of trial and error until I managed to target the right element. Okay, so I will show you my path testing. So what this test does is to submit an application form. Fill in all the fails and then submit it going into the acknowledgement page. So if Fill-in does a basic lock-in as well, then it's going to isolate the grand scheme. Fill in each of the elements. Yup, the test pass. So after doing the happy path, I will show you my source code. Yup. So I decided to go for a very, very step-by-step approach. Listing out all the elements. Then this is the user interaction. Then filling out the form, filling out the sessions. Then without any assertion at this point in time. And then submit the form. And then assertion is mainly at the bottom whereby I want to test whether application submission is successful or not. So after doing this, my next step as a developer, I don't like this. There's a lot of codes that's repetitive. I didn't want to dry my own code. So I also as broad like the page object model about 50% still in the progress but I think that essentially the juice of it is achieved. That's why I decided to try other feature. So test 03 is my code. I decided to classify it by page. So we had the eligibility page, the ground creation page, then all the other page is submitted. Then each of the session will have this code. So in the examples that test get page show all these IDs can be actually initiate as another variable and over here we can just call the function for that variable instead. So that we actually don't have to redefine like all these code. What if it is changed? Then we can use it at the central place to update all this ID and update all this value. And just not what I mentioned, I couldn't get one of the code to work. The interaction with the text. By rights, this select text it accepts an option for me to clear away, replace away the text as a type but this is not working. So as a temporary measure I decided that I will just do more steps like I will select the text first, delete it, then after that input the text. And to make my test a bit more simple I will just make it as a function so that my function actually cause this clear type text instead. And then my select, my select actually is I have to do a two step approach to do my selection and I also decided to make this as a function. So this kind of like help me to simplify the amount of changes I have to make. If let's say I have a new run itself, new application I can reuse all this code easily. So this kind of like so with this, I feel like I have achieved the essence of page object model but if you all and all the provision tester if you all think otherwise please let me know and share with me. Then I also explored like the reporter is it possible that can it use a team CD reporter currently our CI pipeline we are using team CD so is there any easy integration with team CD or with any other units then yes, it's pretty easy people have already write return the package for that okay so this is my package.json file so if I want to change the reporter I can either add dash dash reporter as unit inside or I can use a dash R team CD and the output will be in the whatever report thing you need to specify then some of the option I will say here headless I really like this option and dash dash means screenshot on failure so if let's say the test fails then this test cafe will help us automatically do a screenshot and save the result to this folder this is the test to run so after that I decided yes, I have meet all my tree objective so what's next then I decided to experiment with Jenkins and then QCumple whether can it support the BDD format behavior driven development and unfortunately I tried and it seems that the experimentation wasn't as successful because the current there is no obvious support for this Jenkins and QCumple I did try to use the existing I did try to use the existing library but unfortunately they are saying that is fabricated and the other thing is that this will be my basic login test which I write in BDD format so I do a login navigate to the home page click on the login URL then when I fill in the credential and click apply then I should be login to the system then this is my definition of the steps now unfortunately I don't really have much luck on this session and then I don't like the syntax that's why I decided that maybe I should wait for the official support for this Jenkins and QCumple syntax team city sure okay, I'm running this with team city report yep, so this is the information that you get from team city itself and actually the next thing I try is stalker I really like to learn stalker that's why although testcafe does officially support stalker but I don't have much luck as well I'm suspecting that it's lacking a module which I need which is the moment.js so my suspicious haven't really go into the code is that the result actually use moments sorry, just now I delete away it views like the folders are actually structured in year, month, date and this one will be using my guess is it's using moment that is why it's complaining about the missing information although officially support but I don't have much luck then from this 2 days of try I have actually learnt that from just now what you all observe as well is the startup is pretty slow but the good news is with headless it's much faster it takes about 30s more for browser versus headless and I really like about good documentation that testcafe has it has been released for since 2013 so it is pretty stable reporting is not as comprehensive as robot framework so what I see just now is that usually robot framework what you give us is a good very good structure HKML report setting each of the steps that we have performed but in this case I don't really get that comprehensive report it's good for official test but for our case since we are not going to replace robot framework I think this is good enough and it's also good for CI integration and I also learnt about writing testable UI because of the problem that encountered so what's next I am still very very keen to set out my own docker file and then using a docker compose to run the test make sure that at least get the test execution to be fast then I'm also interested to explore more of the functionality especially like assessing of the console log so this is something that I tried puppeteer is although it integrates with the Chrome Dev2 it doesn't really give me the access to crawl the console log at a point in time so why I'm particular about this is that as a developer sometimes I will just open do a right click and then inspect the element and then check console log is there anything wrong with the loading of the element itself so with this right you can help me to print out I don't have to do a manual test then just know what I mentioned right I only try test cafe for 5 minutes and I think that actually I want to invest more time in using test cafe studio understand how it works and next right to explore what specific selector we are using react.js and test cafe actually have another package to support react.js component testing so that's end of my talk then do you all have any questions ya it can be supported by mobile native no web oh actually I was wasn't on mobile framework from the start it's more on the web framework so cafe barra is actually a web testing mobile or robot we use it for our regression testing so for this one right we want to run it faster and also it's more developer centric we are using Node.js and it's something that the developer are more used to that is why we want to try out like the test cafe sorry may not be so it really depends so robot framework we are still using it so it's not like doing this to try out how can we explore new tools as well besides robot framework any other things we can try so robot framework in fact we have reached a very our usage I see that we have reached a very mature state whereby we have talkarized all our tests then running maybe 10 to 20 tests at one time using talkar so it reached a point so I decided I was thinking that yes I can do robot framework but my learning will be greater if let's say I try a new tool and when I try a new tool I also learns that what kind of improvement or what kind of like gaps are there for robot framework and that will also help me appreciate robot framework better yep korang it's Python yes Node.js so Node.js is I think Python is also OS Anostic same as Node.js so Node.js to me is easier to set up I can just do as a developer I already installed Node.js already and then I can just do NPM install test cafe and this one supports there's a React library as well thanks for sharing so okay next so we are also hiring looking for great team players with all these roles and not only all these roles people who are passionate about tech and want to help us to build awesome service so be part of our journey and our future you can reach me at this email okay thank you and have a great weekend