 भीँिया ज़वाजा भीविर देलबरखे जन्द जीवे ड़ब. यह गपनी श्यने जाएसेग है. क्हरेश़ वीत, करेश देलखे, यह जीवे अग़ी का चीवेझे। यह चीवेग वह देलखे शब लिजेज बदूई nevertheless more than 2, because the less is a disruptive activity that is meant to actually challenge what the developers have done, अद्या। नहां एक पर लगाड़ी वाली हैं अविल्ग वहाँ देंगर। अविल्ग भर देंगर देंगर करादी। ती सोमी आप बदान है की आप पर नहीं vídeo का पाता राबा रोगाड़ीख़। आप पी री दी of ंबी दी दी अस्रदान एक साक्चाटडाया førसे रड करत् להיות जीन पहने ज़ queer. पर ताध करतम कच्ची इधछ सैया करना वह सोंग है! कर Ken Double Ne曲 ै आनत जों Deutsche Unionなく Yoga तो एक ढ़िलriters नाठ थम साशरंं कर Reagan अस्रधान पहने घäus लग़ाज़ ज़ुयए पहन 9 pretending a अर millennials, these are the drivers of the pandemic, this is the main thing of TV right now. अर वेँ नेसे और बीबी दी, the definition of beedee is that it is a software development cycle in which the जिन यह थी, किआदा हो बरहता ऄदा हो गरनें है? और इसद्यार और वेत of वेत गरनेें है. जि एक लब़े लेगे अगर च़र अनी हो लगर नादा है. How it is done is basically the projectiles, proposed all of these business applications requirement are jotted down and they are actually taken as an input for the VBV or TES. And the stakeholders can actually evaluate by running these tests or through the supports and what they required was given out or not. So if you say that something happens in real-life applications like तो बाज्ते कभाद्श्टन के आपा from the case, the development is the requirement as it is collected is actually given through the testers. थिखा थी कर काद्श्टन करनेगानादी देप्टी करनेगानादी So this is what is expected out of pre-functionality. कर थी की आपा कादाशक्टन के आपा की ण्दाशाँ।ा चोixonलों तो तो सी अदाश्लाए कर कचानेएगाना।। प्रतमॴ the only difference with pdv, ख़डड सथ जरवhammer mike ्जग़ц कशा ऎर शिया है तब शि flame वने ड़ुरण है थब � Gromb वुत बनके वन एगरांग गयाग देख schöne शरी unglaub्ग प्रादगdisplaystyle जि. वी जच़। �ी । वाड़. बनके सquency ज्रि�ことवाद़। खिल च्रिव hil दम देखार लेगा ऴब एक नब बनाग्ये नोग बाज़ों करग़़ा है, देखान बनाग्ये बाज़ों कर ग़़़़ा हमाग्ये प्यदाडा जोन आदा नोग नहीं थो वो थमसी ऻईजा चीजएश यान घब करों, और तोग लआद में लुगी थाएद, जे लोग कचो आंविनै कितज़ स्धा वो बी आड़। जिस आप देखटल बी श्याद को भी याड़ बाल दर दर मुलने ज़ो बाऊ कर थो जो भी श्थरा कर जो देश्ने कापिश्तुझा जिस वो बी याड़, बी याड़ is the behavior-driven development in PHP, Pengor. आद लिए कर देखर में चिए और आप कि मैं वो ऄीक देखर है, कि जर जाबस्प्रे अँग्डिक थे अग्डिक छीए लिए को है, देखर और यहाग देखर आप प्रठाद के अग्डिक के रवा प्रेघगी जाए तंबना है, और सकते पहुच्ट यह आफ गब देखर प्र अग खुलिएद सुक्छ जयकिन से लगोँ करतादूपॉधृ, now it's time for the stakeholders to read through it, how do they reach out, oh, i wanted this, this is how i've done. उको ती मज्दउनी बदिशाना। it's how it's used called stake holders actually. खुलिएख आख्गे अख ज्यरकिनसे और यह च्यरकिन लेगे औल एक लेगे थारादूप।। तो दूर्किड कराँने रहते है। पर रहेंगित आप तूछे लगें तूछे और पुएकिर यास मभोग्च्वाद लेंगा भी लागे और ःना कच्छा फुपड़ाच्च्ञा ahora. जोगर्गिस को यह एक अनगत ब्रीधाी करने करकुम कर्ठिजो। मंशे के ने दूगर्त ब्रWorking is basically.. खूए कर्ठिच यह ढाँ सक्या कना बार के 【 host surface 앵-51 को लोगे और पुटेठॉ नहींकिकि कर्ठिच अगॉता yeah since priorit that this is that common so that is, "...making for users or human beings can actually understand what's being done. Because this is a very English normal language, so they can actually relate to it and understand what's required. ... 2 Krishna Files, and to feature files basically what is done is what you want to do ... or what the feature is actually being made for is written in this. रह्ग़ ठ catalog तो हमaborantali सो भी मुँ स्याह्को स reform friendly प्रहीं, आपच्टनार्व, अबच्टनार्व अबच्टनार्व, अब घाई दीग, बहुत गे रही तानगा क्या एक दोगाए, बद्हात, लख्टन्दानार्व यह थे तोईस, उन खौग व्त्टनार्वु को तहाँ ज़ान्चाओरावॢ, यह सईनाभ्यो लिया। जाएस्मादे सूड़़ों वो थें्नारियों खुमतासा वो मुझे रहेंानी है उन्धाऱ्ांगे नैदियों आझक्दांगे में अच्दि़ूशु. रही यह थी उआश़्ाण़े लिएगे नाडियों अँछ्ची जी कान बनुच्ढूँ. ब attractivu वो थुज समन है उसक्तरीखा यह वी पर देचा भी भीटलेगा वी भीटलेगा वी वी तफ प्रतेगी तो, भी बी बीटलेगा में, और में தोछ़ेगे 10 तफ धफством of 12 ॐन्स दो, थो, आजा, तो जो, नहों ग़ता मैं सब जोर्झाम आपने प्रुअचाराप्ते में ख़ाता अदरा वीग सो अपग़ानादे नहीं और च़ाफ्तापच्टानावागते की की ख़ाता शॉएद। रही ब आप वो वोन तो तो उसेब वो गरे अग़ने वो देगा, वी वो झो ठहीत हैं। असेस और में ऐसा ہے, american me ॐ॔ ॐ। साझाबनास् प्साँदीत तुम छोबते है बागर्तलिए साझाब हूंगे विप्सूर्ठी कोई आप यहान विप्सर्ठाँ आप ख़्डवाति. विप्सुर्ठी की विप्स साझाब हूंगे है. अर्विप्सी की आप शयावाति में पह लिए, आपाद्रों अगान देखेर मेग कोन लिग को स्वादिन noting आप इंके वी फिल्ट्टों आप फिल्टों सेँ बगरेगे सब या उद़ाएप केई के विद्वों कोगा आप जाट, आप वो आपगा आपखाजाँ देखेः सेँ बागरेगे. आप आप गरद़्िक आप देखे अगर अ़्नाँयों ़ुछ जो शो और मने ऱाभो वो भी एक आभवः करेंगा, अघली है, तो वो ठी कोपी रँगा क़ा तूछने लेगागेंगा। तो थो, all the scenarios when we were seeing that we had given then and what's and these are basically your steps. वॉप्यक्या आपी सीथग ten, now, when we have the bhat with troupe l'aide, वी दूप्टिः, there are a lot of things that troupe l'aide extension gives you already, एक साद हो तो वॉप्यक्या, आपी सीथगते, so you don't have to write your steps again, आपी सेथगते हो तो तो पादा, you already have it with, आपी सेथगते हो तो जो रोते तो गरूँ. how you can use them. ौए ॔ए। as it is helpful for the viewer people because we can actually write the test case from using something called as making sanction which already gives you some functionalities like clicking on links and already defined there. नेद्वनित second, if the other button, or if the other button shows its element, यो पुट्बनकोग ने आध़ाone click on the button or you can say your element works on the other page. तरते कोटेदने किकुदखृत, अगि दिएगातुच है। And you added it in the step before that, click on this page. रब मूँ आपका सबकातनी पूर्वाँ सबग्वार्च्ताया जाः मूँ और क्ैज्डित, अगर नहीं गरा वी एक तो सब नुधना है। और वहाँ बॉत्त्र स्फ्रट्च्ताया। बॉधना च्च्चौत्चोः है। यह आँश्श्वन कुई देंगा है puntos, रहुडोग में इसलग देखॉंकेखागाशना न कुच डोग आप आप दीख कै आज़ावाद है आज़ावादवाद । अ़ोने आज़ावों दीखों लिए लग़ावाद तुद िीखु। csak 3 नायोस, बाल कочку अआत भी सब सब पहको. करो खोएमा निसाज भी आर वाला, सब नीवा, सब या कोएमा, देद्रिओं। बहुत्या Ichin-chochii derma में घरनी में आईवात् क॥न् wären जर than�amer adapter क्यों यॕर त॥ने के चूछ क्तब मुँह्रूं। लाisp self-зы�好 ल Feels-ocation land य�餘्य पांको सुंछने तिवाजिनी था, टीना जाडने भाजिने खेखा लगे दो, वो आपने अपने साँप ऑर ज़ास्तोंने वूअगाँ. लिए न्धि टिएर की party of hoots, आप पटरा चिवाजता श्विते लेगे मैगर और खिल. उस मैं आपने और खिलगे शिनाडिए है! ञukt ख़्ज़ा™ न्दाझु़ नंज महावॉmachine षेトミーंचलो थरीउ धघश् deals च्ञार estimates श्वाग के थी ख़्ज़ा लुँ कैं के उच्टे कोक तुल्थ थी लग़्ाई कोले थुलमा थाँगा राए। if I want to have get something done before my one feature file, I can actually have it there and before running this feature just do these things. Similar way as after my feature has run, do this thing. If I want to set a state for my feature file before, which is different than what is write mark present in my application, I can do it over here. And after I can just replace it and put my application back into the same feature state. Similarly as this is before scenario and after scenario, it is actually run for each scenario file. So if I want to actually do something before my scenario, if I want my JavaScript or my browser to be at certain configuration like certain screen size, I will do that. Next is like before every given then, but it's going to work over here. Okay, this is an example of hope. I have actually taken an example of before scenario where I am setting my screen size of my browser. That I want my window size to be of this whenever my Firefox or my browser is loaded. For doing that, I need to actually have to write this, use my name space of before scenario scope and for after it is after scenario scope. If I am actually using these classes, these functions, it will not work until and unless I have written these main spaces. It's not going to be working right now. That's one thing that is required. Next is time-books. Like I was saying that in case I have written a before scenario, but I don't want it to run for each and every scenario. Like I have a, my v-hat suite is like 300 scenarios. I don't want my hook to be running each time. But I want to run it for specific scenarios that I'll probably add in the tag. So what it does is when you actually write in your feature file, you'll probably write the same tag. For example, like here, I have this before scenario tag attached to it. In my feature file, before my scenario outline or before my scenario, I'll write the same tag. So what it does is that it will identify that this before scenario or this tag needs to be run for this. And it's going to do that. Next you can actually see over here is that I have and also. So what it's going to do is that it's going to look for the adaptive database and it's also going to look for adaptive fixture. If my both conditions are fulfilled, my both tags are done, then only my this function needs to be run. If something is failed, one out of two, then it's not going to be run. So you can actually use AND and ORS along with that. If you want to have a good suite where we don't want to use high-level, you don't want to value your befores and afters multiple times. Before scenario is understandable. You need a certain condition before that it cannot be before scenario. So that will run and then your scenario will run. But what is actually being served by a tag? Tags is basically you write for categorization. Like if you have something like this needs to be run for authenticated user. I create my tag. It can be anything. I create something like add the rate authenticated. So I want another scenario that needs to be run for authenticated users only. It doesn't need to be run for this. Or it has a dependency that this provision needs to be assigned before the other scenario works. So I'll probably tag it along with add the rate authenticated. So both are going to run each time. If it identifies for this, the other tag also needs to be run. So we have actually runs through tags as well through feature files. First it will look for feature files. In feature files if it finds a tag, it will look in your true. Is there another tag for this as well? If there is, it will run that scenario again. It might be defined in a different feature but feature file. So it thinks that these are categorized together and these needs to be run together. So you just have to only run a certain set. Can you say like, I only want to run the data business. We have an extension for that as well. There was an extension which actually does that. We had actually made a screenshot so you need to configure it. And there is an extension which will match your screenshots as well. But we have seen because we had actually supports that it depends upon your extension. If it's actually supporting those browsers, it will work. That depends completely on your functionality like what you want it to do. We had is not something that will test your units. It is basically for your acceptance testing and some functionality. To that extent we can use it. Now it depends upon, if we have to develop for your behavior. If your behavior is more, you can use it to that extent. It depends completely on what is required out of your functionality. Next is the text. We actually work right now with features and we realize. Now for my step preparation, if I write something about the custom. I need to have something in bucket which will actually test it. What feature does it actually describes how your application is going to behave. But what context does is it is actually going to test your application. So in simple words, it's this context. Next is for context. Whenever you actually install your brutal, when you bootstrap your v-hat. A file is already created that is the feature context. So in that file we have this class already available. In this class I will write my action that this needs to be done. How it is written is written like this. When I do something, something should be expected. So what about if I want to use my feature context. In case like I want to use my feature context. And I want to use link context as well. And I want to use selective context. I want to use selective as well. I want to use rushed context. I want to use all this thing that is given out to me. Is it possible? Yes, it is possible. How is it possible? In your v-hat.ynl, when you actually define your context you can do this thing. Like for feature context is your v-hat context in which whatever you are going to write is going to be there. But if you want to use some other extension, then it is done in your v-hat.ynl column. For example, if your application is very big and you are actually going to write lot of v-hat tests. What is it going to do? Your feature about context file is going to be very big. And in case it is going to be unmanageable at some point of time. And you might not even know that some definitions were defined there. And some definitions were defined again. So in that case what we can do is we can actually divide it. And we can have multiple context files. But how will your test know that this context file is available in this and this is now? So for that in v-hat.ynl, you actually write your other files or you can context files. From where it can find the step definitions. So when we are talking in terms of v-hat.ynl, I want to use feature functionalities with my v-hat. And for that I only need to write that in my v-hat.ynl, if there is one context, Drupal context, just include that. So I will probably have all the functionalities that Drupal is giving me presently. So I can modify that, I can use my own step definitions to do multiple things for Drupal. Like I said, for Drupal context, we actually have two things. One is raw, Drupal context and the other is Drupal context. When you actually, in your v-hat.ynl, in your feature context, you have, if you see, it actually implements your raw Drupal context rather than Drupal context. Because it will actually give you all the elements that are available in that. And your Drupal context actually extends raw to Drupal context. That's how it is done. So depending what functionalities you do, you can extend it to that level. If you want some little functionalities, you can actually use Drupal context. But if you want the raw things like I want the whole entities and I want to have this before it has actually rendered through my Drupal even, then you should use raw Drupal context. It depends completely on your functionalities. Like I said, for Drupal context, I want to alter my node object. Then I need to extend this, I will probably add my Drupal context and I need to use my main space in which my node object is given out. I will probably use the Drupal extension and books in which I can alter this. This is how it is done. This was something like Drupal, but apart from Drupal, if I want to do something, we can actually use the already main along with this. What we is, it actually gives you a lot of functionality that is already built. If I want to write, click on elements, if I want to fill some things. So I will probably use the main along with my Drupal, rather than actually writing my own step definitions for that. For me, you actually extend your main context and that is how it is done. Next is your phantom.js. What this phantom.js basically does. If you are actually using VHAT directly, you will not be able to do certain functionalities because what it is using is right now headless browsers. So you are not able to have the ability to actually have the JavaScript functionalities or Ajix functionalities, you can't alter that. Or you can't have this, after I press this, this should pop up. That's not going to happen. In case you want to check your JavaScript things, or if you want to have the after some elements are click on your Ajix, if you want that, you will probably have to extend phantom.js along with your VHAT file. What it will do, phantom.js is basically a headless browser emulation and it will actually help you have JavaScript automations along with it. In VHAT phantom.js actually acts as a boost. What it does, it will act like it's using Selenium as a backend but instead it's using phantom.js. That was it for my session and I had a demo but certainly it was not working. But I can actually show you my files. This is my VHAT file. That's why I will say that. I have already used my VHAT so I actually had this in there. I have already used mink so I have my mink over there. I can actually have some brush functionalities also like I read inside or I clear my side. I have this thing like brush to see all the brush type installed and all the things that is actually given in my brush context. So this is how it is done. In this, if the base, when you are actually writing this, you have to try to base the URL on which you are actually going to do your testing or you are going to run your application, basically your scenarios and features on this. This can be something on your local. This can be something on the life side as well. You need to have the URL set according to that. One thing is that what I observed was if you actually set a URL like google.com or you can have your production site or truple and then you are trying to run your truple context, it's not going to work because truple context needs a physical environment where it is running. In that case you can actually use something mink which is going to be very helpful and you can actually write those scenarios or steps according to that and actually test things. So when I installed my v-hat, I got this build file from where my v-hat is actually running and it will actually use all the scenarios and it will actually run the features from this file. We don't usually mess around with it but the next thing is your feature. This is actually bootstrap each time. For each scenario, this file is going to be called. Like we were saying that we probably have all my code available over there like I can write my before scenarios and all this thing over there. So when the scenario is running, it will look for that tag and it will identify whether it needs to be run right now or not because this file is being called each time. As I was saying that right now it says your raw truple context instead of truple context because it wants you to have your entities and you can actually use them. This is a small example of your feature file. It is not running right now because some of the issues with my Firefox so it actually feels because of this but I can actually help you, I can explain you this thing right now. Like given I am a moped, when I am a moped I should see my element or I can see this should be already available that is my site. What else is that when you are trying to install your v-hike, I have done my composer and that is the best thing what I felt was so you actually need to write a composer.json in this you actually write a truple extension for your v-hike you can actually write down your v-hat and v-hat version and when you actually do a composer install this is what will happen and you will probably have your dependencies already there. If you want to have something like a specific version of your things like for my dozen like lot of people use it and if you want to have something for a specific you can say version of even a truple extension you can actually write down to here and I actually specify this is your configuration in this I specify where my v-hat file is which is one of one file so as I specified from this it needs to find my v-hat file this one so that was it I guess for execution I just need to be on this this directory that is v-hat and then I need to run v-hike but if you want to run something like specific tags like we were talking about I want to read this function so I can actually write v-hike add tags and then my tag so it will actually run those selected tags and you can even have your specific feature files where you have to specify a feature and then the file file so there are three things one is the feature file which has it's a library how do you get the feature context right? it has your custom set preparations you can say and the third is to be hack out all your features yeah all those contexts how do you get v-hat file like you take v-hat file you actually define v-hat file v-hat file and what all do you need to do in order to set up v-hat like v-hat v-hat for v-hat you need just one key composer of levy for you you need to it's already documented well on the site v-hat v-hat dot dot you only need to create your composer dot jason site and then you need to have your composer installed in that you directly and then you just run composer installed and that's all and you have v-hat ready how do you achieve parallel execution of test cases sorry how do you achieve parallel execution of test cases sorry how do you achieve parallel execution of test cases in v-hat well let's say I have a hundred of test cases and I have to execute on different instances let's say I have to there is one instance, there is a fire fork browser other instance with chrome and I have to execute all these test cases in parallel just like you do in selenium grid is there an option in v-hat we can execute this all suit in parallel execution in v-hat I have not seen it yet in code section you can in v-hat you do I have not seen it happening because we actually specify the days you are alone here and is there any testing reporting tool for v-hat just like we have test entry for java and other people level even for feature how many scenarios faster than how can you work you actually have to integrate it with v-hat and you have to have that in your v-hat or firevel and you need to install it by composer I'll give you the extension name I don't remember it right now but I guess it was v-hat HTTP format of extension this was that it actually gives you graphical representation screenshots so per day it depends upon what do you work it is because if you are testing something that is varying maybe in body it means to have this as an element that's the boundary yeah you can the example is I showed was that then I should see this element and then you can even write it like I should see this element in this region this id or this class you can go to that level in that case you actually use the scenario outline that's the best case because you only write one time the scenario and you can just add it a new line for your content that is also important you can actually verify whether it was imported correctly that each element the marking was correct or not you can actually verify that it would have been easier because then you have id and stuff like that you just have transient and you can your test cannot there has to be some kind of mapping in your word file or excel which is difficult if you have an excel where you have id of the content your content and on this side you have no idea where is the mapping what you can do is write a new scenario and in the future you can just write a new network which will have all this library and get that data from the excel file or the word file and then if you are destined there it will be if you are having a word file now say you need a word file second thing is content that you have should have the same mapping it should specify the node id it should specify the feeds and only then whichever software you use you have to read it if you can it should specify the excel file and you can do that this is the last thing I would like you to see which was like the whole step definitions that are already available and we might not need to write our own is like this when you actually run this amand so I already have lot of things which are brutal because when I scripted my brutal extension this was already available for me so I can just directly use them I can just replace these placeholder values like with roles and I can just use them the one good thing is right now it is given because this is given was written in the definition you can actually replace it by when that's one thing to just identify your step definition this step definition actually is this part that is going to be looked for so you can change your keywords then when and in this so these are already available lot of them actually like this is given from wingkit extension rather than from brutal extension so I can read my elements from wingkit extension I can see this I check I use this checkbox do we have any other questions