Creating a Robust Framework with Robot or Cucumber in 4 hours | Winston Castillo | Skillshare

Playback Speed

  • 0.5x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 2x

Creating a Robust Framework with Robot or Cucumber in 4 hours

teacher avatar Winston Castillo, Learning is the way

Watch this class and thousands more

Get unlimited access to every class
Taught by industry leaders & working professionals
Topics include illustration, design, photography, and more

Watch this class and thousands more

Get unlimited access to every class
Taught by industry leaders & working professionals
Topics include illustration, design, photography, and more

Lessons in This Class

22 Lessons (4h 22m)
    • 1. Welcome and Intro to the class

    • 2. 01 What is a Framework

    • 3. 02 Keyword, Behaviour and Robustness

    • 4. 03 A Second Part: Installing Robot and Editing PATH in MAC

    • 5. 03 B Installing Python and Robot Framework Windows

    • 6. 03 B EXTRA: In case you didn't check the "Add to Path" in the wizard

    • 7. 04 Installing the IDLE: Pycharm

    • 8. 05 Download and Install SeleniumLibrary

    • 9. 06 Download the Driver

    • 10. 06 A Editing the PATH variable in Windows

    • 11. 06 B Editing the PATH variable in Mac

    • 12. 07 Creating the base code

    • 13. 08 Let's do Page Object Model (POM)

    • 14. 09 Data Driven Testing

    • 15. 10 Final touches, create a base file and directories

    • 16. 11 Compare with Cucumber First Part

    • 17. 12 Compare with Cucumber Second Part

    • 18. Extra Step Mac: After installing Java, configure the JAVA_HOME

    • 19. Extra Step WINDOWS: After installing Java, configure the JAVA_HOME

    • 20. 13 Creating the selenium code to integrate with cucumber

    • 21. 14 Dividing the code in layers

    • 22. 15 Thrid Part: Questions and Challenge for you

  • --
  • Beginner level
  • Intermediate level
  • Advanced level
  • All levels

Community Generated

The level is determined by a majority opinion of students who have reviewed this class. The teacher's recommendation is shown until at least 5 student responses are collected.





About This Class

In our class today we will work on the concepts for a robust automation framework for your End to End and Functional testing, looking at the different types of frameworks and how to use the tool in our advantage.

- We will modify a project with a basic structure and running correctly

- We will use libraries to perform different actions

- We will review the importance of logging and good design

- We will incorporate layers

- We will include in Robot an excel fiela dn we will see the matching way to do in Cucumber

Meet Your Teacher

Teacher Profile Image

Winston Castillo

Learning is the way


Hello, I'm Winston. I had been teaching for different platforms and I am a QA expert and also a developer.

Please take the chance to review and learn with me

See full profile

Class Ratings

Expectations Met?
  • 0%
  • Yes
  • 0%
  • Somewhat
  • 0%
  • Not really
  • 0%
Reviews Archive

In October 2018, we updated our review system to improve the way we collect feedback. Below are the reviews written before that update.

Why Join Skillshare?

Take award-winning Skillshare Original Classes

Each class has short lessons, hands-on projects

Your membership supports Skillshare teachers

Learn From Anywhere

Take classes on the go with the Skillshare app. Stream or download to watch on the plane, the subway, or wherever you learn best.


1. Welcome and Intro to the class: Hello and welcome back to my classes. I am truly excited to share with you a new QA topic. This time, when we talk about automation frameworks and the importance of using them in your quality strategy. We will use cucumber and Robot framework to determine the important aspects you should have in mind to have a robust framework. If you are considering automating your test cases, this class is something you have to check out. So let us start. Before starting, let me introduce myself. My name is Winston Castillo and I have been working as a QA Analyst for the last six years. And I started as a manual tester, but it was a natural jump to start automating. And yeah, you guess right! My first problem was to understand why should be the best tool and in case I want to use a new one. What are the aspects I should have in mind to select it? It will come in handy to understand some aspects before starting with the class. And here I want to make a stop and remind you that might classes are divided into three sections. First one is about concepts and some topics I think you should understand before trying anything else. The second section, we follow a guided activity with the tools involved in our topic. So that if you want to jump directly there, we will start using cucumber and Robert framework. Finally, the third exception. It will be at the time for you to work on your challenge. I hope you enjoyed the class. And if you have any feedback or suggestions, make sure to comment or review this class if you find it valuable. Welcome again, and it's time to start the first section of the class. 2. 01 What is a Framework: One of the things I enjoy the most are related to the conversations we lead with our teammates. For the valuable things we use in our daily jobs. Maybe we are obsessed with using our time wisely. But when it comes to QA things, it seems like all our job is to test over and over the same things with no compassion to find the bugs and malfunctions to show the developers, we can be just as smart as them and they cannot fool us. There should be a way to gain their respect too, and that moment could be when we start creating automation. This is a serious matter, and in case you hadn't noticed, it is that part of the quality process where you can face some of the things that developers also overcome. This class is all about. So here's the first concept we will review in this class. What is a testing framework? A Framework is a set of guidelines or rules to create and the scientists cases, it is a combination of practices and tools that are designed to test more efficiently and also required. Some of those GI lines are coding standards, test data handle methods. Git repositories, processes for storing test results or information on how to access external resources. One of the things I want to tell you guys is automation can be created with absence of these rules. Don't get me wrong. Of course. We can create a Romanian without following these rules. But when we are talking well code, the benefits of following patterns will be majored in our world, will be easily integrated with the work of the rest of the team. And we will provide a protocol to follow in case already QA's one to include code are maintained in day one we create in our automation way, way, way, way, way, way. In means to automate this august necessary to know how to call yes or not. What do you think is the best answer to this question? Before answering me? Yes. Blend you some things. 3. 02 Keyword, Behaviour and Robustness: There are six common type of test automation frameworks, each with their own architecture and benefits. Here's a list of the types of automation frameworks we can find. Linear animation framework, modular based automation framework or library architecture testing framework data-driven same word, keyword or behavior driving framework. And the last one, I read testing framework. Yeah, It is not necessary to go for all of them. Linear test automation framework, also referred to as record and playback framework. Testers don't need to write code to create functions. And the steps are written in sequential order. In this process, the testers records each steps such as navigation, user input or checkpoints. Then place this script back automatically to conduct the test. Sadly. We will work with keyword or behavior automation frameworks. Cucucmber is a behavior driven framework and robot is a keyword driven framework. Both of them are created to make easier way to understand the code, make possible to everyone to know what you are testing with your code. So it means the answer to this question is a big YES but no worries, I got your back. And I will guide you to use Both frameworks and being able to create a simple automation with the tools. Now that we are talking about the type of frameworks, let's talk about the keyword driven framework. a keywords driven framework is a type of a full shell. is a type of Functional Automation Testing Framework which is also known as table driving testing or action word-based testing. The basic working of keyword driven framework is to divide the test cases into four different parts. First one is called test step. Second is object of test step. third is Action on Test Objec and then four is data, test data. Let's elaborate each component. For example. Step is a very small description of the action the test object is going to perform. The test is, it is the name of the software application, object or element by username field, title of the window, password field, those kind of things. So the option, it is what we are going to perform on the object. The action could be lead on the elements of the browser. It couldn't inputs on test, etc. I'm finally the test data. And the data can be devalued needed by the object to perform and certain options. Username, test, volume, and password to use as credential to volume. So the main idea with the keyword driving perspective is to separate the code from the test cases and test steps that and not technical person can understand automation well. The biggest advantage is once you start with this kind of framework, a manual tester can write automation scripts for you in the future without having a level of expertise with coding. It sounds great, doesn't it? However, the COVID skills are still require it for setting up the framework and to work on regular changes and updates of background automation code. Once the framework is set, the rest is about making it rebels. Now, what is behavior driving framework or BDT? That is a branch of principles defining but test-driven development or TDD. I bet you had her about this. Because what is VDD about? It means we will need to create an understand the user stories and their assets as criteria. Because in test drive in development, we build from the unit tests and made them pass with our code. And in TDD, we create the escenarios and make them pass too. The principles and knowledge is leveraged in BDD had been widely adopted in functional testing. As I mentioned, Cucucmber is a BDD. Testing framework, which has Enable non-technical product owners to define application behavior as human readable tests. Those behaviors or futures, trust lay into code. The QA team can achieve test automation faster and easier even with a lack of domain or business knowledge. Now I want to bring into the table what is rabbits nest? Because we are talking about robustness. There are a couple of factors to consider. If you want a robust framework, the first thing you had, you should have in mind is the framework. Organization. Automation framework needs to be well organized to make it easier to understand and work with the framework. Organized framework provides an easier way to expand and maintain. Items. Do we consider are easy way to manage researchers configurations, input, direct test, test cases, and utility functions. Provides support for adding new features. Easy to integrate with automation tools, third-party tools, database, etc. And have this term that is creating guidelines that needs to be follow in case you want to make better your framework. The other thing you should have in mind is a good design for your framework. Animation tests are used for long-term relation runs to reduce the testing turnaround time. Hence, there is sense in bold should be good so that the test can be maintained easily. Following are some of the good design steps. The first one is separation of application or ketose from the test code so that the locators can be dated in the locator five, independently onchange, separate test data from the code and pull data from this internal sources such as IT sale, debts, flyer, CASB, or it's an XML files. Whenever required, we can just update the data in the file so we don't need to change all the code. The data will be in those files and we can update and easily organize tests as modules, functions so that they are real sable and easy to manage. The application business logic in this separate class and Khaldun from the test class. Test surely start from basis state and ensure that it recovers and continuous when there are intermittent test failed, failures. What I mean with this, you should be able to create test-based state for all your automation, so that makes your framework better and more rows. The other thing you should have in mind also is the configuration options. The first one is the framework to provide an option to shoot the configurations at runtime so that it can be used as per the test execution requirement. Some of the configurations include ability to choose test execution environments such as QA, staging or production. Ability to choose the browser. It could be crown or five-fourths, for example, our ability to choose the opportunities seize general platform, and the ability to mark four priority dependency and roofs for the tests. The other thing that major framework travels is real sable libraries. Libraries help in grouping of the application is deities and highly complex implementation large in front of the external wall. It helps encode real stability and easy to maintain code. So one of the things you should do is to build the libraries of utilities, business logic, and institutional connections. Also build a library of genetic functions of the frameworks. So if you do that and completion, you will have a really robust framework. Everything is about report and lakhs. To evaluate effectiveness of automation, we need to write set of results. The automation frameworks should provide all the details required to test execution and provide lots with necessary details of problem with the custom message. And also you had to report which provides the details a fusion status with pass fail escaped category alone with the screenshots effectively control the automation framework. We need to keep track of it. The version control system is required to achieve this. Also, we need to run the relations sweet continuously to ensure that the tests are running fine and the application functionality is as expected. If we bill the rovers automation framework with the bot capabilities, we gain the benefits. First one is increase product reliability, accurate, efficient, automated relation tests. And we reduce risk. Reduce their product release cycle time, improve the time to market, reduced QA cycle time, and improve efficiency and effectiveness of QA. So the QA team is free to focus on manual efforts when needed. That's all my friend, that's all that you need to know about robustness in frameworks. So you already know everything you need to know. So let's move on to the next section where we will start working withdrawal and cucumber. 4. 03 A Second Part: Installing Robot and Editing PATH in MAC: Ready to start installing robot framework for your computer. This step is only for Mac users. If you don't have a Mac computer, you can skip this video and go to the next video. You have window. Go away to the next video. It means that you had not. So here you have to perform some steps to install your growth framework in the computer. First one, go to your terminal. To open your terminal, you need to do is to type terminale here. Open the first result. You will find these terminal. And one of the thing that happens with the terminal here is that now Mac is working with an SH. And everything we are going to do is for these terminal, this new type of terminal is not the bash one. The old one is while it was the bash. But now we are working with C, S, H term ELA. And these steps are for that terminal. However, once you have your terminal open, go to robot framework that org, this is the official website. You will find all the documentation from ROD Framework. Remember, here we are going to work with ROD Framework, Selenium library, and also Pie Chart. And what we are going to do is to create a robust framework. So yeah, I think that's pretty much o, and here, what do we need to do is to study styling. You can click on here and you will see these command. The first thing I want to let you know is that one of the things that have happened with Mac, you had two types of versions in your computer. The first one is Python. When you type Python slash slash version, you will see that you have Python that to that seven, that 18 and that version. It is because of the beta test system regarding Mac. It means that we got this version to run the whole competitive system. But they want, what we need is gonna be the Python three version. So if you type Python three dash, dash version, and you will see Python three that a that night. That one is the one we are going to use to install broad framework. When you see these command, something that I really recommend you to type on here, copy. And then you have to pace here that command. But we are going to do a couple of things to change this command. The first one is we are going to tap sudo and hearing Pete, we will, we will add the three. We will run that pseudo bit three instead robot framework. We will type our, our password, the password we use for the computer, for the youth user admin of the computer will be my password. I cannot tell you. Okay. You will see something that requirement and ready satisfy. And you will see the URL for the dilatory where your framework is install. However, I just want it for the, for the version of three. If I really want to get denies any style it in the right, in the, in the, in the right attorney, in the right version of Python. All that I need to do is to check that here. I'm going to type, delete it where it's supposed to be. My my broad framework. Everything that you have to do here is to go to your, to your library. You're surely it should be CD. You can't use the quotes. And users. Your name, usually the name of Usha that you'll sweat users, Sorry. My cases. Lagging stone Castillo. And after that, the slash m here, you can type library. And then you can add another slash am. The only thing that changed is this, the name of the user, this case minus this one. Here we are in there in the, in our dilatory. You can tie open that and that will open our finder. What happened here? You had that seven version and the three that eight version. If you type, if you clip on the bean, you should see this robot. Here you had instead in the version three, the ROD Framework Program. So make sure you actually have that version in DC. This version, diversion of Robert install on this directory. Otherwise it should be in to that seven being, you should see here something that says draw both, okay? No worries. If it is here, it means that your broad framework is going to run. That seven version is not. For me. I don't recommend you to run it there, but it's not, it's not gonna be a big problem for this class. However, I really want it to be here. And thank you. We need this data story. One of the things that I do is if you, if you put your mouse, if you move your mouse on the bin folder here, you can drag these to your terminal and you will see the whole dilatory. These are the three we needed for the, for the path, the path of a variable that we use in Mac. If I type echo path, gonna see my path variable is already set in my computer. Because I had been working with broad framework before, but no worries, I'm gonna show you how you can edit your path variable. Here's what we're going to do. Fair thing. You had to tie echo. Path should be in capital letters, breeding capitalism. You will see here all the directories that are for the path. If you see here, you will see that my my URL for my Python is already added. That maybe in your system is not there. We had to complete zone and smaller steps here. First one, we need to use this command sudo nano. And after that, we are going to edit the file for the S. For the TSH. We need to type. All these commands are in the description on the video, so no worries, you can just copy and paste. You type this. You had to add your password for the computer and again, security for you. There, you should add another line that is sport path and copy. It's actually the place where your robot framework is that you open a new window here. The third is the one that you had to copy and then paste. Everything that you have to do here is you go for the last line. You and you tie a support. Padding, capital letters equals quotes. Padding in capital letter column. Then cheer, you had to the directory that you have here. Remember that should be the Detroit where you see these robot execute file. Everything that you do is you copy this and paste it here. And it should be this way. If you see, I already did that. So it's here. So there is no need of repeating that. I already had my directory in the path variable. And after that, what you have to do is to press at the same time the Control key. And it's going to ask you if you want to say modify both buffer and you had to say yes. It's an asked you what is the file that you want to write? You have to let it exactly the way it is. Don't touch anything. It should be something that as HRC file. So you just press Enter and that's all. After that. The last thing that you have to do is to reload all those values. And on the you need to do is to type source and then use your file. Should be. And suddenly this one. And you type Enter. And after that, you are ready, you are ready to go. Remember these commands are gonna be in the video so you can't just copy and paste them on your terminal. This is not really complicated, but the only way that you are gonna know that you did it dry is when you type robot and do the robot dash version. And you will see the version of your row. Here. We aren't going to work with broad framework for that one, that three, that's the version we're going to use for this class, for this video. If you reach this part, congratulations, you are ready. You already installed Road framework in your Mac. So let's continue with the rest of the steps. 5. 03 B Installing Python and Robot Framework Windows: We'll just start to start using broad framework. We're gonna need to use Python three. If you had a window. Window or parity system is not minutes or Mac. This is not necessarily to see the previous video. This is the way we are going to work. In the other videos. Don't think so much about this test that I performed in the last video for Mac, because those are specific for Mac and Linux. And in case of window, there are some things that are easier. The first thing I want you to do is to look for Python three. Do download Python. You type You can reach this website. Python m. Please download the latest version for Windows. Make sure that you are downloaded the version for window. If you, if you tie here, you just need to allow the computer to download version, download Python. And then you will see when we start to start installing Python on your computer, if you had a Mac version, you can actually skip this video. But here there are some things that are important for you. I'm not gonna install these because I already did it. But one of the thing I want you to do is to select this one is starting now that it's going to include the documentation. The EDL is another one that we're going to use, but it's good to have in your computer. But also please check this one. Python, three dots to the path. We're gonna need python added to the past. If you don't know how to do it, I'm going to show you how to do that. Actually, it's gonna be easier if you do it here. You don't need to do anything else to prefer any extra step is to just check this part of the installation wizard. Then you just click on Install. Now you're gonna perform these because as I told you, I didn't really install Python three, my computer. So it's not gonna be necessary for me to run this step. Once you type out here, just waiting until the Hole Wizard install Python on your computer. And when you receive the success message is gonna be the time to continue with the resources. The other thing we aren't gonna need is ROD Framework. But relative framework works with Python. So again, it's going to be necessary to have Python on your computer before moving on with the other steps. Just type robot thing that come once you have that surgery that, or it's not that kind of sad or just make mistakes. Here is Road framework, framework for g. Here you will see all the documentation of our Road framework. If you start Python three is not gonna be necessary to perform any other state. Rather than run this command. You just click on here, copy and go to your terminal here, you can type CMD. You will see your terminal here, all that you need to type the command that you copy from the website. Install broad framework. Once you have that, once you do that, you gonna see, in my case, you see that I already had the programming styling my computer. This message is about It's about upgrading. Might Pete, I should do it in the future, but it's not a big deal. I can work with the one that I had here is not a problem. However, this is the only thing that you need to run. After that, you just type in this command robot dash, dash version. You should receive the version of your Road framework. So it should be something that I've robot dash entered and you will see something like this. Once you have that is unnecessary to perform any other step, you add the row of framework installed on your computer. You are ready to go. This is the only thing that you have to do to install a broad framework. Next step is gonna be two instead the EDL, where we're going to start. One that we are going to use for this course. So I see you in the next video. However, all the commands eight years in B's in this video. All the commands that you need to time in your terminal are gonna be the description of this video. So no worries. I will see you in the next video. 6. 03 B EXTRA: In case you didn't check the "Add to Path" in the wizard: Well, should we get an extra step in case you didn't check on the Python three. We saw that installation process. You'd never check on the ACT to pass a checkbox on that you need to do is simple. You are going to type here variable. You're gonna see this, edit the system and vitamin by the walls. Here you will see a minimum. Invite them, meant by doubles. On there. You will see two different paths. Variables. You will see here in system, but it was, you will see the pathway levels and hearing the users, you will see another path. Longitude do for example, if you click on Edit here, you will see all the URLs. Where are they located? In case you didn't. You didn't add Python, the Python, the Python data to your path. You don't need to do it here. It's not gonna be necessarily to do it here. Just close here. Because the part that you have to edit is the one that is upper sets shown is the one that is here. Edit here. And you can't, you can only add a new path, a new directory. You have to do is just click this button. Here. You will add the one for your Python. If you see here I had all my Python directory already added. For the samples Euclid here you see the Python scripts. I had everything and really added to my path. Here I had the Python's version on race style. But if you want to add the path for these binomial random variable, you need to do is to type Python. When you see Python in the list of your, of your matches. Don't open it. Don't do what I did. Just type Python because you're gonna see that a couple of options here. I want you to type on this one, to click this one. So it's going to open the folder where Python is, is the following. We need to add for the, for the path variable. If you see here, I got the scripts and thank God, for example, the pirate 3832. That is exactly this one, is the one if you see see you, sir, Winston Castillo, app data roaming, Microsoft. Maybe it is a little different, but my recommendation is to use this one. So after that, you just read on here, copy this, then go here and add it here. You just type on new. Pass it here. I'm not gonna, I'm gonna add anything. But you had to. After you do this, you need to do is to tap on, Okay. After you do that, you can just you can just click on. Okay. I think it's different, this one. So I'm going to add it just to make sure that and having the Python variable. However, it's not gonna be necessarily for me, as I told you, I already configured all these variables, so it's not I didn't need it at all. Once you've finished with it, just click on, Okay. Okay. Yeah, that's all. You're already at. Python to your path. Again, if you don't check that on your, on your installation process, you have to perform these manually so you don't need to remove our only started everything any style. Again, you just need to run this extra step. If you under David, No worries, You don't need to do is. So see you in the next video. 7. 04 Installing the IDLE: Pycharm: Hello again, shear. We are in the Google website and now we're going to download the EDL we will use for ROD Framework. Let me try to make it clear. The EIDL is not going to not going to produce any different effects or resolve. The arrow is to make us work better or easier to run or our scripts and do some things. So in case you cannot install some other things, I'm going to recommend you or suggest you to do. You are free to use any other tool. The only thing that you had to keep or to be careful about is about the wage. You type the keyboards. Because the keywords are the most important thing on broad framework. Remember this is give, give your behavior framework. That's the only thing that is gonna be really important to us. The result, the things I'm going to use do this because it's one of my it is easy to meet. You understand? And that's the reason I prefer to use it. Okay. No worries at all. If you don't use it, you can use a blind test that is editor. You can use your text editor. It's not a big deal because in case of fraud framework in Python, you don't need to compile that code that you create. However, please try to use PyCharm is a good one. So all that you need to do here is to type pie chart. By chance. When you click pie chart, you can also, you can also add in your search community. Because that's the one we are going to use the community version. Why we are going to use the community with version? It is because it's free to download it. You are looking at my width signing in Spanish, That's my first language. Switch to English is gonna be closer to the website. You're gonna see, yeah, it's gonna be something like this. So please use this one, the community version, just click on here. And then after Euclid on here, it's going to lead you to this website. Try to download the file. And I'm gonna need to download that because I already had PyCharm installed in my computer. But all that you need to do is to download the PyCharm version and you will see virtually this one for the community edition. So that's all that you need to do. Please download the file and then clip on here. And you're gonna be guided in all the process to install pie chart in your computer. That's all. Once you already had pycharm, you just need to run this. Just gonna show you some screen by Hub. You can do it by your own alone. You want Hello? Yes. Yes. And it's gonna it's gonna lead you for the whole process. This is only working on next. Next, next, you will install the product. You want to quit. Once you are in PyCharm thing, I highly recommend you just start using an editor who help you to a plugin to help you to create your test. Your broad framework called albedo because pie chart takes a little while to load. But yeah, one of the things about the evils is that you are gonna have a lot of things happening on your screen. That's the recently, it is easier. I do prefer to use them because it's gonna be easier to util understand the rope, the framework, the framework. Necrosis, sorry. Well, isn't it any easier to do to understand the framework structure here you will see some things. So please don't pay so much attention on this because we are going to start creating our own project for this class. I'm going to explain you earlier of the screens and you are going to see here in case we can see, all, all of us can see the same thing. Major that you had a screen. Just write this. You should project files here. You should see the It's something like this. On displays. Here you will see the terminology. Does a reasonably do prefer to use the EDL every change, the Jupyter for here, you can run it immediately. You don't need to vote to any other way to do anything else. You can do everything here in the evil. We're going to create our ones and it's going to be easier to use to see how to create a robust framework and why it is easy to do with Robert framework. And what are the things that he already that the framework does for you. Gonna see the differences with cucumber for example. However, let us, let us start, but before starting, I'm going to ask you to go to settings. Here in plug-ins type drug. Once you go here, there is a plug-in that is called Robert framework support. Support is the one that I need you to install, measure that the other author of the plugin is valid. You Angeline. Click on Install. So again, it's already starting my computer, so I don't need to run any of these steps. Very high, highly recommend you to run those steps before continuing with the rest of the beauties of the class. Once you have these unready done, we are ready to go, but there are still two more steps that you had to perform before continuing with the course and with the things we are doing here. Again, we are gonna need new edition on the path variable. And in case you are a Mac, I'm gonna create a video to explain you how to do that in your computer. And again, it is necessary to perform all these steps before continuing with the videos and trying to replicate any of their steps and letting you here so please follow all of them. I'm gonna see you in the next video. Bye. 8. 05 Download and Install SeleniumLibrary: And yet here we are in my website when stone Castillo, that cone slash rover cell anion. Here we will do some things to understand concepts on frameworks, on automation frameworks. What we have here is we are going to try to create an automation and simple automation. Understand all the concepts that we studied in the first section of the class of the videos. I am going to do here is to go to Contact Us. The fourth weren't going to test. Maybe these foreign is going to change in the future. So maybe when you see this class, you return to this form and maybe it could be different. But no worries. The 4%, what I want here is to create different users and tried to say in this contact form at least ten times and feed it out with the information with a different file. But this thing here is that we are going to test a user-interface from a website. The web applications we got in the world during the internet and you want to test them. The best way to test n is with Selenium. Robot framework also had Selenium library. We can use Selenium to perform all these steps. This selenium is a library is totally different to having a framework. Even if you use Selenium with Java, we're going to use it with cucumber. Selenium is only a library, and selenium only provides, provides you some methods to test user interface for a website or a web application. So if you want to test an API, or if you want to test, for example, an application, an app for your form. You are gonna need other libraries, other files, other things in order to do that. Remember this. One of the things that I wanted to spring here is that having a library in your framework is going to, going to make you easier to work. Those are one of the aspects you should have in mind when you are selecting your framework. It should provide you a way to change between libraries. It means that you don't need to learn a new framework in order to create an automation for an application for your phone. For, for an API endpoint. You should be able to use the same framework. Here. What we are going to do then is to download the download that library. In order to achieve that, we need to go to the road finger website. And we will have some disruptions how to download the library we are going to use. Again, this route, we are going to use Selenium because we are going to test web application. If you go here, there shouldn't be getting started. Resources. There should be a perception about the libraries we got. We had here, we got some libraries that are built or there are other libraries that are not, are not included when you install your broad framework. Here we got a couple of libraries. If you click on buildings, you don't need to solve any of these libraries. Maybe we aren't going to use these libraries. But if you go here, these are external libraries. If you want to see more, you just click on Show More and you're gonna see it all the libraries that are available to use withdrawal framework, for example, this one Albion library is to test Android and ios testing. We got the for many, many, many different, diverse. Again, the one that we need is this one selenium library. Again, when you want to test something with a library, you had to download that data library in your computer. And that's what we are going to perform now. Everything that we had to do is to run this command indeterminate. So let's run this copy. We open a terminal in Mac. Remember if you had a Mac just type terminal, you will be able to see the terminal or the common problem. But in window, because I'm working with window, I'm gonna run CMT. Here. You need to do is to paste. That command. Doesn't work. I'm gonna do it again. It says that it's set for install. I should not be I should, I should not had any problem with the library. This is a pretty thin that you had to download. Sometimes it is showing these kind of warnings based on the things that are happening with Python. However, if you want to see what are the things that you already started, you just need to run this bit. It's going to provide you all the things that are installed. If you see ROD Framework, Selenium library, those are already style. You don't need to do anything else. That's all. Let's go for the next step is the last one we need to do in order to start creating our automation for this class. 9. 06 Download the Driver: So we reach the final step for to perform this one. Cop this stat into videos. The first one for the driver, and the second one to edit your path. Why I decided to split this class into two videos. This step into videos. It is because it's going to be different in window the way that we, that we modify the path. And they way that we modify the path in math is different. So this is step is exactly the same even in math or window. However, the browser we're going to use to perform all the videos in this class is going to be Chrome. However, again, gonna be necessary to use in order to understand the benefits of having a framework to be able to change into crown and be able to change to five-fourths foreign sample and run the whole the whole code. But that challenge is going to be for you once you reach the third section, the only thing that you have to do is to download the five-fourths and look for the five-fourths driver, then change it everything. However, I'm gonna provide you soon as steps to prefer that option. However, here we are trying to download the Chrome, the Chrome driver for Chrome. The first thing that I need you to do is to create down here and go to help clear them about Google Chrome. Once you click on About Google Chrome, you are going to see the version that you had for your computer. This is extremely important to know because once you go to Google, that can Euclid on here, for example, Chrome driver download. You are going to be in a repository of different versions of the Chrome driver. But you had to look for the one which matches with the version of your Google Chrome. You had 96040 seats. I think it's this one. I think. You see that here. I had the 9271 and maybe that could be, you know, maybe you think it could be a problem but no worries. At least these three should match. Maybe the one that I'm looking for is this one. I want to download this one. Everything that I need to do is to download the depending of the version that he had. For example, this theory two or in this case I just had it. Once I have the Chrome Driver, I need to strap this file. I got a special folder here in data, the data. I'm going to create a folder for my, for my browser. I'm going to create a new folder. I can do it here. That is going to be on. The Chrome Driver is absolutely there. If I go to that folder, I'm gonna try to open that folder. Let me check it out. Here. Data browsers for drivers, for browsers, I think that's the name. I'm gonna look at that one driver for browsers. Yeah, it's this one. Here. I had the Chrome driver. The next step that I'm going to explain you, the next video is to add these you, this directory location to my environment. Variables in vitamin, vitamin butter. Well sorry. That's the final step. Again. It's different in window than in Mac. So that's the reason I decided to split this video. So this is everything that you have to do. You already download the version for your Google, for your Google browser. And the last step is to add these to the path bottom will see you in the next video. If you add window and if you had Mac, go for the Mac video for this step. 10. 06 A Editing the PATH variable in Windows: Well, how we are going to modify the path here in window that I need you to do is to copy this directory, the directory where you actually strategy electron driver that adds, maybe it's different for you. This is the one that is for me. Everything that I had to do is to copy this and type here variable and go to Edit sustaining vitamin environment by nobles. Once you are here, click on environment variables. In, here in the user. Just go to the Path. Click on edit. Here in the last one. Type of new location. And the salt run ready modify the path variable. So let's go to start using ROD Framework. 11. 06 B Editing the PATH variable in Mac: Here we are in the class to edit the bathroom mat. And to be honest, it's not so much that you have to do to edit the path and run this command. Sudo nano already here. Do you need to just to run it? I don't know what is the name of this symbol in English, but it will provide you light the root of your directories. Once you are here and you use the word pseudo, it is because you are going to do changes in an admin level. In Mac. You just taught, you just type on Enter. You had to provide your password. After you provide your password, you're not gonna see that nothing is changing in a determiner. That's not among you, is you are not writing, but do you do then hit Enter after you put your password, after you write your password. And here's the step depart when you need to add the directory where you had the drivers, for example, one of the directory. The auditory when I had my my divers is this one, drivers browser. So if I just go to the driver, to the folder and click on the name, and I got that to the terminal. I can have the root. But these rules is already added in my computer. If you see here, users, Winston Castillo, library, documents and drivers closer than this one, if you see, it's not necessarily true either. But for you, if you had another URL, please just type export path equals you make the batter will path to like keep the order. The other stories that are already added, then you're on your own, you're dealt. My recommendation or your directory, sorry, my recommended recommendation here is to add that new one in the last line. For example, here. Once you added all that you need to do, I'm going to add anything. Again, it's already here so I don't need to add it. After you finish just here on control. And it's going to ask you to modify the file, just type and y. And then stat just going to ask you the file to define a into right? Keep it the way that it is is this file cs h, r, c. And just hit enter. That's all. After you've finished the last, the last step is to run the search with the name of the file that you unready modify. Because it's going to load the changes. You just type search and hit enter, and that's all. Your path is already there if you want to, we want to prove or can prove that you actually modify the path variable, just type equal. And after that, go to that in capital letters and path capital letter. And you're gonna see all the directories that are already are at your path. That's pretty much all is you. If you follow these steps, you know, now how to modify your path in Mac. 12. 07 Creating the base code: So here we are. We are going to start with robot framework and really happy to have this class. And what we're going to do is we are going to go for these wet sky. We will click on Contact Us. And after that, we are going to fill out these forms, k1 summit, and then we will return to main website. To the main page. Yeah, that's all that we are going to do. The first, the first thing we will do is to create a simple automation. And the first thing you had to open the Selenium library documentation for robot framework. The Selenium library documentation is here. And I highly recommend you to use it. When you are creating your information. It's really difficult to remember all the keywords are right here. So all that you need to do is to read the documentation of all, for example, this these keywords. You want to assign ID to our main keyword, wherever you will have here, and that's no commendation to start using it. So feel lucky because at this point we got huge documentation about everything and all the keywords that were used for Selenium library. We will start creating our cold right now. The first thing, go to your pie chart. Once you are here, maybe you are not going to see the projects that I had here. No worries about it is not a problem. So please done. Take too much time to emulate the same screen. Not necessary. What we are going to do is to start a new project. So the first thing, the first step, go here and create a new project. Here is one of the things for the idle to have in mind. A asked you to create a built-on environment with your, with your project. Maybe this one is the default selection for your, for you. But what we're going to do is to create a project for ourselves to rot framework. These things about creating a weird one machine where you can have all the computing vitamin with libraries and everything for Python. But again, we are going to work with throat framework, so we'd need to use Python, but we are going to use the robot framework environments to create our, create our framework. I'm gonna repeat this steps. Do you have to go here and create a new project? Once you are here, you had to use to select the directory when you want to, to save your project. In my case, I create a folder that is called frameworks rabbits. And I'm going to create a subfolder for this. Here in the neck, create, assume folded, and I'm gonna call wins turn Castillo. Store. Here. I'm gonna have my project. And I think that's OK here. And I'm not going to use a new environment. I'm going to use an interpreter because I already installed Python three, you might computer. I'm please make sure you don't have this option check. It should not be checked. So it should be uncheck. Create onCreate. Here, I'm going to ask for a new window in my case because I want to my project here. I'm gonna move this right away. You can do it in the same window if you don't have any other projects under the append. So it's not going to be necessary to create a new one. Here is our folder, Here's our project. The next step is to create our first file. To do that, you just right-click and then click on New. And you should be able to see them fine. If you don't see the option here, maybe it is because pie chart is dating, so no worries. It's gonna be available after the PyCharm is already dated and you had the robot file. However. All that we need to change is instead a statue stem shown off the file is not a big deal. But when you create it by here, you are going to have that robot stem extension. So it's going to be like, for example, fears automation that robot, so you can run it. However, what I'm going to do here is to create a road file and here I'm going to connect, create a serious one. After sometimes I'm gonna, I'm gonna let you know why I created with that 001. I created. And I'm going to have a file just like this one where I have the test case settings keywords that we aren't going to do is to sample. My first automation of the class. The library we are going to use is not order than Selenium library. So we had to write it like it's an anion library. That's all now we got all the keywords that we got for Selenium library. We got them here. Hold those keywords are unready here. Remember to use etc. The way that you see the name of the library heat here, she'll be exactly the way that you type it. Your library. Library here with capital letters and everything should be the same. Okay, so now what we're going to do is simple. We are going to go for my website here. After we open the website, we are going to click on Contact Us. And then again going to fill out this form. And that's all that we are going to do. I don't think we're gonna need the keywords for now. Our test type is gonna be 01. I'm going to create this case. It's going to be the first one. The second one is going to be sending information. Let's start. Our tax is going to be the tax are. As I told you, a good framework provides you ways to run for the sample specific test case. You don't need to run all the test cases when you want to run an automation. So that's the purpose of having tags for the automation. If you agreed here, for example, a smoke test that you are going to run when you ask road to run the test cases with the smoke, that is what the test cases that are going to be run. You can use multiple tests is not not that you only need to use just one. And that's one of the benefits of having a framework. We are not building the framework here. There are such a multiple frameworks. And again, this one is one of the easiest. For now, what we're going to do is to use some keywords that are that belongs to Selenium library. And the first one is open. A browser. Browser is our our fears keyword. If you see, we see all the possible keywords and you can have some help from the editor. You're LDH is the first one thing that you had to send and then the browser. So you need to do is to hit on top or get more than two spaces and then you can use their URL is the first thing that you have to provide here. And the URL is going to be, Robertson, Control-C, Control-V. Then I'm going to hit again on the top. And we can tell Chrome browser we are going to use. We also can use CC, sorry, Google Chrome. This is another way to define Google Chrome. Or we can use crown. If we want to use five-fourths for the sample, we use five-fourths when we need to have the drivers for five-fourths. We also can use Edge is up to you, but now we're going to use contract. Google Chrome. We are, their nets thing we are going to do is we will check that the title is Latina, that we can stronger CTO. Okay, So title should be used today. I'm going to use I think it's not with capital letter. Let me shake it out. Yeah. We know capital letters. Capital letter, Castillo. Next one is Focus two elements. Here I'm gonna provide they're located, they are located or is link. Links. I can use older kind of located. Located is contact. I can use the link, I can use the Add spot, the class, whatever I need. One of the things that you had to do to provide the locator on a website that you create, you just make a right-click on the element and you click on Inspect. There you will see a window just like this one. Click on the arrow here. And if you click there, you going to see kind of highlighted in the elements. That highlight is to show you what is the element you are selecting. For example, if I create here, I clicked here and right-click in the inspector window. You can copy. The path is tight spot, spot. You have different ways to provide information of the element for the US and they scream, for now I'm going to use the link that is Contact Us. So simple, it's easier for me, so I'm going to use that. And then I click on Link. Link element could be. Here, is this one. If everything is okay. We should be the second test case. And the second test case is sending the user information. First thing is titled should be. If I clicked here, I click on Contact Us. I shouldn't read window that is called Contact Us. Tab on top or get more than two spaces and contact us. The next thing I should say in here, some of the information I shouldn't say and the info here, here, here, and then click on Submit. I think that's all my test case about taught here. Plus two elements. And here I'm going to use focus on these elements. Is this something here? So here we got the ID input name, so I can use that one. And this one is also input email. And if I go to the last one, input in, those are the IDs. So I can't use that in Road framework when I use the ideas, I don't need to provide any, anything else. But not all the elements in our website. Having ideas. This is something that most of the developers should do, but sometimes they don't. Worries. Not a big deal. But luckily, here we do get the ID, so I'm going to use the IDs. And then I'm going to create with the Summit, I'm going to delete this element. I'm going to use another locator. I'm going to provide you the opportunity to see how to see different locators. Set focus to elements. The element is input name. Dash nine. I wanted two types of information on input. One I'm going to do is input. Test more than two spaces, in more than two spaces. And here I'm going to provide input. This one is input name. Here. It should be input Gmail, e-mail that come. And next is input test. I'm going to use It's me to send. I'm going to, I'm going to print print screen on this one. I'm going to print here. I want you to show you all the things that I type because everything that's on that happen really fast. Maybe we are not going to see what we are doing with the automation here. What, the next thing we are going to do is to take a previous screen. Go for library and PNS clean inscription, that's, that's the day keyword. Captured. Pages screenshot. We are going to do is I'm going to use another locator for the army. If I'm doing this to provide you different ways that you can locate, that you can locate an element in the user interface. So here we have it. You see this is not having an ID like the rest. So what I'm going to do is right-click copy and copy it spot. You can use full at spot or spot. The difference between them is that one is coming from all the whole route. That's what I'm gonna show you that right away. Go copy full spot. If I copy the full ads spot for the sample, I'm going to see here. He said complete routes for the elements. This is not orange, you can use it is not thought is not a problem. But some of our engineers believe that those are really long names that so that could ruin your automation because you're going to use a lower dose of tests to locate your elements. So honestly, for me is not a problem. I don't care a lot. One of the reason is I do prefer to use these alarm at spot, because if something changed in the user interface, I'm gonna know right away, I'm going to know that right away because my automation is going to fail. So I'm gonna be able to detect if something is wrong. However, that's the reason most of the automators are the engineers who automate things, who automated test cases. They prefer to use the show one because sometimes some elements on the west side. They only change the position or they changed from a group or they change the way we access elements, but they are still there. If you provide the shore spot is less possible that your automation wholesale because of something that's changing the user interface. It's up to you. The last word is in your hand. No worries, It's up to you. However, I'm going to go for the short one. Here, it and copy spot here, I'm going to paste it here. Something that you had to add here is to put the word path column. That's all you got here, the red spot. And finally we are going to close the rows. That's all. Now, if you go here, you need to do is to type robot. The name of your file, 001. If you tap, if you press on the top key, the task is going to complete the name of the file. If you don't have anything that is similar to the file that you are writing. So you just need to write 001 and hit tab. And you are going to see the whole name of the file that say, let's run it. Past. Here are the important things. The framework created for you. Report HTML file, lock HTML5, and output ML file. What are the importance here? The report and locked HTML. If you open the report for the sample HTML, Let's open it. You're going to receive that report of all the test cases that pass. And you see they open in the wet side and Sandy user information bottles of them passed. And you can see the task that you had here, for example, the smoke. So you will see all the test cases that had there is smoke tag, the small tag. If you see here the opening, what scientists, the only one that is smoke, but they're sending user information. It doesn't have the attack. So you don't see in the report, you see here the suites. We got only one that is 001 automation. Yeah. I think that's pretty much all for the report. But the other thing that is important that you create with the with the framework that is provided by the framework is log file. If we open the log file, for example, when we aren't going to see here is complete execution logs where you can't, but it's step-by-step the thing that you did on your test case. So you see here and you see here, and for example, if I want to see the screenshot, I have it here. You see? That's all. Maybe you think, yeah, I did it. This is a great animation. But this is not the way we usually work on their real work, on the real world and the real work. So yeah, here's the thing We had to step up. This automation, we had to make it better. And to achieve that, we need to complete a couple of steps. We already had the lot output and report what we had to divide these layers and create a better information in order to make it easier to maintain this automation. Now with simple, we've got 123456789101112 steps. So maybe you mentioned your or you think this is really simple to maintain and, and you know, unchanged, unmodified. But in the real world, you are not going to have this kind of automation. You aren't gonna have Dao sense of files. You had to be careful the way you create all your animation. In the next step, the first thing we're going to do something that we call page or logit model. We are going to be by all the automation in a liar when you can get the elements on the options in another file. I will see you in the next video. 13. 08 Let's do Page Object Model (POM): And here we are. We are going to do some changes. We are going to start doing some improvements. Automation. Well, I told you that the first one is going to be page often model all the articles that I'm gonna start doing. Gonna be able to see all the steps. Then I'm going to start doing in our repo. I'm going to load so you can download the code also. And you can also check out if you are following all the steps. Now that we need to do is to start creating wires to divide the framework. As I told you. The first thing you have to do is to create liars and make everything easier to maintain in the future. We actually had some things that our framework created for us. The thing is that we are going to start creating more folders. Here when we're going to create a new directory. The first one, then I'm gonna create test cases directory. Here. I'm going to put all my automation here. Is fired Griffith. And we had the test cases here. Now we need to create the locators. We need to clean all our code. So here, we should not have these kind of things are not going to be part of the test cases any longer. The reason behind that is because if you had multiples test cases or new one too for somebody's this bottom change, the locator or anything on this, you have to go for all the test cases. Will Europe use that element and modified it one-by-one? So we usually create with page object model, we create different locate the locators for all the pages. For example, if we go if we go here, I go for the homepage, for example. Let me try to hear all these elements. You can. It started sending the information from the locators for these elements, these elements in just one file. So it's something changed here. You go directly to that file and you just modified it. You don't have to do anything else. That's what we're going to start creating. We're going to create a new data directory is going to be called blockade. It should not be here, sorry, immediately that it was going to do it. The first level. Just go here to the store and get a tree and locate torques. We got it. Now we need to do another thing is we are going to create the elements. We can do it this way. Here we're going to create a file that is gonna be gonna see these warnings. And it is because you are not, you are not using good for your version than doing it in order to provide you, to provide you in the future. For those people who wants to access the code. I just want to create tracking session where you can have all the files that I am creating. Those match, matches with the file matches with the class, but you are current DC. So no worries about those warnings that I'm receiving it is because of the elements. I'm going to start by identifying my elements. What are the elements that I use here? I just go to the Contact Us. That's the only element that I use here. I click here. Here, that element, I didn't define the element by this copy. Here I'm going to create these signs just help you to create comments. So this is going to be it nor by this isn't gonna be ignored by the language. What do you do here is to put some comments and it's going to help you do less than what, what did you do in the past? Because most of the time you are going to create automation when you're not gonna see that in our IOT. I highly recommend you also to create comments for your automation that's part of having roles framework. Okay, so here I'm going to create the contact equals. Here I'm going to add in quotes. Located. Thing about Python is that you don't need to put a semicolon at the end of each line. For example, we had to do that with other languages like Java. But this one is not necessary. Remember that Isn't, it was not created for programmers by term. Proceed. That's the great thing about using title. We have it. That's all. That's the only one that we use for the, for the Hong element. Let's go for and another fine. On the Python side. This one is going to be contact. We have it here. Here we use more elements. My input name, input, email input required. And this one that I think is Submit bottom. Yep. I think that's all not we're going to add here. So again, use comments here. Again, I just adding the 1s, those those elements that we interact with. And I'm gonna add anything else because it's going to take you longer. That's the reason I'm using those. First one is e-mail. E-mail. Everything that we need to start moving. Names for, email. Email. One of the things that are light is light. You see this red line or something. So it helps a lot. That's the other benefit of needle. Here we're going to face something great. And it's a good opportunity to show you. Spot is having quotes. I want then to be interpreted literally. I had to do here is to add some slash before the quotes. I'm going to add it here. Now you see that they are interpreted correctly. The other thing is that you are going to receive like an ad buys these lie icon. You can reformat file. Supposed to be reformat. However, here we have it. Those are all the elements we are going to interact with. Nets. Thing we had to do is the page page audit per se. The beach object is besides having the all the elements in another file, the other thing that you had to do is to create the absolute divide the options that you do on your website, on your code. In the test cases, everything that you have to do is to look for those keywords. In case something changed, in case something needs to be date it. You know that you had to go to the page object model and modify that. We had the locators. And now we need to create another directory. Here. We had to create the page. We're going to do. It's actually the same that we did with the order elements files, degree one for the home and one for the content page. And it's something changed with the interruption. We go directly to that file and we just modified it. Doesn't resume, we create these folders. And maybe it could be time-consuming or you think why I'm gonna do that is a lot of work. In the future. You are gonna be really happy to have all your code divided. This is a good practice. You are going to create really high level frameworks and really high-level automation. Because all your code can be maintains easily. Again, here in the index page, I'm going to create a new road framework. File add in here. We are going to create the homepage one. Let us remove the test cases. We have not going to need this. Now we're going to emulate the principal documentation. I'm going to add here. Yeah, we're going to create a bunch of keywords. By the first one is we want to verify the homepage title. Title. That what we do is titled shouldn't be. I forgot something to add the library or otherwise, he's recognizing and then everyone is going to be here, shouldn't be here. I need more than anything that I had to to also load. Here is the variables. Are the variables. Variables are 11 folder behind. And then I go to the locators to go one folder back, or I need to do is to use that dot slash. So there we go. Two locators. Match. Going to use here. Homepage page elements. Let me go. The other thing is we conduct what we had set focus to elements. Here I'm going to use the name of their body. And this is the mean of the bottom one. I'm going to hit Control C. Paste it. But I need to dollar sign keys quarterly. We had here, this is the way then we use a damp fleet element. I'm going to use this same binding. Because here we are referring to these elements. And anyone with the link, with the link cut that that's all that we need to do here is not really complicated. For now. We already had all the page object elements already done. But we need to change that here. In order to change it. We also need to load here. Defines where we are working with. Those files are going to be called resource. That's the way we call file that we load to load variables. We use research that lash because it's interest case. I need to go back and then project, then slash. And here I'm going to use the home page. I need to respect even the capital letters for the name of the file. Okay. And yet we have a tear. Everything is caret thing we will do these two remote, this is not gonna be called this way is going to, we're going to use a keyword here is the one that is going to be called here. We remove this bar. Thing is that we had to remove these two lines. What we are going to type there any space well, let's see here. And yeah, that's pretty much all. Let's verify that everything is working as expected. Now I can't run robots. And one of the things that I can do here is to tell the name of the folder. I don't need to type the name of the file here. If I had a bunch of different test cases here, I just need to put the name of the folder. Robot is going to interpret that everything that is having a relative framework extension is going to be run test cases in less than a folder. And let's see. Everything is okay. The test case is going to pass. That's what happened. Okay, we are done. We did the, most of the based off yet model. Here I want to challenge, you can just change the rest of the test cases here. The race of the code here. Stop the video and try to do it. Now I'm going to do it for you. Here. I'm going to create a new file and you wrote file. And these one is going to be Contact Us page. Now, the race that I had to do is pretty much similar. Seem in order to these keywords. Here. The only difference is that I'm not going to blow up the home elements. I'm going to have low contact page. Yep. The keywords, I'm going to be different. They wanted that I create. Because here I am going to verify Title VII title to be The title to be capital letters. Is we are going to take a picture dict keyword where I'm going to use here. Captured patient screenshot. When I went to send information. We instead we send the info. Here. What we are going to do is basically we will fit this into contact pages, these ones Contact Us page breaks here. I think we are pretty much done. But we also need to test input testing. We got to do this. Maybe we can paste it here. It is tied name, e-mail, sign only, type ink pen. More decided. I think that's pretty much o. Now we need to change this, right? We should have here, this is the last one. We have it. Here. I can't modify these keyword for title. Just means step. We're going to do here is this cure. Let's go here. Capital, they're here. I think it's gonna be better to remind school here and we paste it here. Now. It doesn't matter if the keywords are not order. The way that we show on a test case where I really like to do it. It seems to me to create more organized these cases type name. One is tight email. Email type inquiry. Comes picture. I think that's the keyword. Peter. I think they'd picture and send information is the last one. Information. Yeah. I think that's pretty much all. We unready change everything and the only thing that is missing that we should change. This one worries, we are going to do some final touches. And at this point what I want you to do is to run test cases, made sure that everything is still working with no problem. And that's all we unready case, something happened. Let's see. Verify content time. I make a mistake with this keyword. Let me see. I know what is happening. I need to load here the Contact Us page, but I want you to show you something. Let me check contact sits this. I'm gonna show you something if you go to your file, just type block HTML, you can go here and see what you see. You see here now keyword with name verifying content type file. The reason it is because I'm not exporting, exporting the research. I created all those keywords. The test case is failing because of this. It's not telling you that it is because you forgot to add the file where you create all the keywords. It provides you a clue of the things that could be ground with your automation. So make sure every time that your automation fails, measure to review the log file. The automation. And let's move, sorry. Vote here and hit Enter. You should see here, okay, and still having problems. And second, Chet, contact us. I know what is happening. Control C, I need the homepage, but I also need the contact us because I'm running to the frame Contact Us page. Now, I already had the keywords that I created for the homepage and the ones that I created for the Contact Us page. Okay. Now, after that, I can draw my test case. Go here. The good thing about failing is that you should see the things that maybe you will face when you create your own automation. So no worries, this is something that the time it happens all the time. So far we already created a page object model. We create a lot of things here and we modify our code to make it better. But we are still on the halfway. There are still two more steps that you have to perform for your information. The first one is what happens if I want to do, you know, to send different different names and I want to fill out multiple times. So I'm going to create these lines over and over different times. Going to create every time that I need to, I need to run the automation. I'm going to create a code for one of the steps for each one of the user's name that we want to type. Because if you see here, and just able to create the contact page and just can send one name, one email. And this is hardcore. Hard to avoid hardcoding. Your automation is not a good practice. It is necessary to save your data from your, from your whole automation. You can create itself file. There are ways that you can use your data and create your data in another file and then read that data from your automation and make it, make your framework to use that data in your test case. In case something is added, you can go there and just add it in the file. That's the last thing we're going to do is to create that and to set all the resonance with folders for the right folder. For now we are pretty much done. We unrelated things with our animation. And again, it's a love of work, but it's a high level information and it's gonna, it's gonna help you to create great things with dirt automation. So I highly recommend you to follow these guidelines because they are going to help you with your automation. So let's move on for the next topic. 14. 09 Data Driven Testing: And yet here we are. We are going to start trying to send multiple data to these forums. And wherever they wanted to do is to be able to do this without how choline and what is how coding itself. If we go here, for example, all the things that we did in our automation here, we are inserting certain directly all our data. This is not a good practice. We are to avoid these. And the only way we can do this is through libraries. And the library we're going to do here we're going to use in this video is data driver. And these library allows you to read that file and try to incorporate that data into your test case. For example, I'm going to give you this data that I created before the class. Let me lower it. Before. I think. Here. What I'm going to do is I'm going to insert this into my form, the form that I had here. Once I click on this, I'm going to click on Submit for example. And when I click Tom it, I'm gonna continue it. And what it's going to happen is I'm going to be ready to head to the homepage and then I'm gonna restart or the process. The first thing you had to have in mind when you are creating data driving testing is what are the steps that are repeated in all the automation? And then you can modify your, your automation into a better framework. You can modify the data in case you need to change some things. One of the things I'm going to do, as I told you, is to insert this data into the automation. In order to do that, I'm going to create a folder with my dad. Gonna save this into my automation here. My folder, I'm going to create a new one. So let me use Samin. And here I'm going to create a new one that is going to call that folder. I'm going to add my Tesla. If I go here now to my automation. I'm gonna see that folder. And I'm going to see the test that I'm going to do here is this step. You don't need to do it. And doing it because I'm creating, they get version for you. You're going to use GTE. Manner should be in green. Now, y is not in green. That's the one that I need to. What is about that step because you're not doing control version for your automation, but I am doing it to provide you these automation in the repository and provide them for this video. Well, now that we got the test data, the paint that I had to do is to insert the data into my, into my test case. We're going to modify the leader, this goal. The first thing we are going to modify is that we are going to create another test case and it's gonna be at that data reader. It's gonna be two on the racecar reader. And here, what we do here actually is to read the data from the automation. For these, we are going to use another library that is not only the one that we use here in the automation, I'm gonna, I'm gonna copy or these lines. And I'm going to paste them here. Okay, so we're going to need selenium library, but we also going to need another library. As I told you, this is the good thing about using same words. And you had to use libraries to perform different options of automation. So in this case, we want to read some data flow nets, cetera file. So we are going to use another library to that purpose. Here. We're gonna need the data Driver Library. And in case you don't know how to install it, that you need to do is to go to our Google. As usual. In everything we do that we do in our job is to go to Here we aren't going to just type Driver thing or installed. Go to the first result. You're going to receive this command, and this command that you need to do is run it into the terminology here. You don't need to move anything, any, any word else that you need to do here is to copy and paste. You are going to receive a successful message. And that's pretty much all with that. Say, you already have the library install on your computer. Next step be added to the automation data driver that's the librarian gonna use. Then I need to provide a file, one to use data from data slash data. Next thing is I need to provide a template for all the steps that are going to be repeated in all day, in all my automation, for example, every time that I, that I try to input the data, I need to go to the username field and input these and these, and these are all the steps that we got for the Contact Us page. And these are exactly the same here. So what I'm going to do is I'm going to copy control C. And I'm going to go for my data. I'm going to create my keyword. And that keyword is going to be entered. Information. What we can do here, We can do that directly. Here. That's going to create a new keyword here is cold. We need to provide some arguments. Those arguments, I will not be taken from the fire. You have to be careful with the names of the arguments because they should match with your sales. Remains. Here we are going to use our itself. I see. I'm going to move here. Then here. Drones will be saying here, they should be at sadly this same counter. Now I'm going to just paste it here. Instead of FirstName, I'm going to use this argument. Instead. Until see. Here. They use e-mail. I am going to use here. Yeah, I think that's pretty much, oh, really change my automation. These are the steps are gonna be unique and are gonna be the same thing that we, that we did in the past. But as I told you, there are other steps that need to be in bold here. Those steps can be also taken from here. This point, what I'm trying to do here is I'm going to copy this information. Because what's going to be easier to me? I'm going to go for the data reader. Here in the Keywords Paste. It was easier for me to do it this way because it's easier for me to visualize everything. You don't need to do it. It's actually like me moving here. Maybe it is better light moving directly from here to here. But here we've got the three steps that we are going to take the information from the from our itself. The other thing we are going to do is to take a picture. We finish. Let's go here and we paste it here. Take a picture. The other thing is send the information. Go for the countertop space and information. Base it here. And then I need to click on continue that bottom. If you see it was not included in my in my automation because this is a new element that I had not seen. In the contact page elements. I'm going to add that bottom. I'm going to call that bottom subsets. And that's gonna be equals to. Something I like to do is to create a link column. And here I'm going to use the word continuous because it's the word that I see here. So that's all done. I'm gonna do Dino. So this is my success. In my Contact Us page. I'm gonna create another, another keyword that is gonna, I'm gonna call this one, I'm going to do is to wait until enemy, the enemy, the space vehicle. And what is the element that I want to see that it's visible. Gonna be, let me dollar curly brackets. It's going to be these elements. This, it says bottom. And I'm going to use it here. This button is visible. When I'm going to do is split element is going to be successful. That's all. That's pretty much all. Let's return to the data reader. And I'm going to now clean, clicked on Tina. Lead. After that thing, we should also verify the title. But first we need to verify the homepage. Homepage. The homepage. So I can't verify homepage title. Contact. Contact these to return to the contact. I M Finally, I'm going to adjust the content title here and trying to make sure that every time that I run my test case is going to, He's gonna return to the forum. Those are the things that I'm providing here. Finally, the test case in this library, you just need to create one, this case n. What? I'm gonna make sure that all the information, that same information may find that these for the right user, an email. So I'm gonna copy this Control C here, insert information while I highly recommend you to do is to provide your, provide the username. So don't add more than two spaces in this line. So what I'm going to do is to say the information to username. So here I'm going to verify that the username is the one that I'm trying to say. We did email. Just one space more. Yeah. This is for tracking better my automation. Now here in the homepage. Sorry, in the first test case, the automation one, I'm going to remote some things because. These days. And also these gonna be necessary any longer. All those sets are being performed here. And finally, I'm going to need that. They're this case a simple one to close the browser. Let's do ROD Framework. Core browser. I don't want to over-complicate things, so that's the reason I'm doing this. This way. I'm going to copy maybe this. Yes. Throne. See here in the test case, I'm going to place almost everything. Did I already say? And I'm gonna need selenium and the test case, I'm going to call this closing. The browser we need here is just one simple keyword and then it's gonna be close. And yeah, that's pretty much all we are done. Let's see is this is working. Let's close our, let's cross our fingers because that's all that we need to do. Let me type here. Robot test cases. Test cases. Let's see. Something failed. Me see Not test template. Here. I never provided test template. I need to provide the test template here. Because I'm gonna, I'm gonna tell the library what are the steps that it needs to repeat every time that he reads align here in the Excel file. So that's the only one problem. I forgot to do it. So now we are pretty much done. Let's see, 12345. And that's all everything past. And one of the thing I wanted to show you now is that if you just open the Log, going to see all the test cases that were not already passed. And hidden data razor, you can see, send the information Maria Gonzales, Peter seen son get some parliamentary roles, bought Christian man, Mansfield. And here you will see everything that you unready in these files, in the data file. So I'm going to do something really quick and I'm gonna show you the benefits of having these Control-C Control-V. Here, for example, I'm going to add Winston Castillo, wind stem students. I'm going to stand here. I'm going to use this to students, and here it sits seven. I'm going to save this. If I run everything again, or I decided to remote everything here. And I'm gonna, I'm gonna have the same result. Mine is gonna be wrong seven times. And that's the purpose of having a robust framework. You can do. You can modify your code. Sorry, you don't need to modify your code. You had to modify the file when you had your data. And that is going to provide you the opportunity to make it better and to provide to do simple things and create a better animation. That's the reason we usually use the data in another file. We are almost done. We almost half done at robots. Complete framework. We still need to do more. Modifications are a couple of things at tiny things we need to do. But after that we are almost done. We are done with broad framework. So I'd see you in the next class. We are going to have this class already provided for you in the repository. So just go to the link. Yeah, that's pretty much all see you in the next video. 15. 10 Final touches, create a base file and directories: And finally we reach the last part of the automation we need to create for the framework. After that, I'm gonna show you the same template in Cucumber spring you later things about cucumber, how to install it. We will use Marvin to create our project in cucumber butt. That's gonna happen in the next video. However, now we are going to finally reached the last thing. You had to make sure you create in your automation. Are you ready? Now we've got these different folders. But if you see here for example, we see that all the screenshots are like in the same directory. So this is not great, is not impressive. We're going to fit that. That's the first thing we will fit. The other thing is we are going to create a common file. Include all the common resources. Finally, we will run some test cases, that information. Let's start there. I'm going to create a new folder here. The kind of folder for your new screenshots, screen shots. I'm going to move all my screenshots to that folder. Now if you see and then we close this opening all of them. So I want to open them. Let's go for the test cases. If you see here, you see that this structure is clean and it's easier to understand where is every of the things we create. The other thing is that I'm gonna create another folder that I'm gonna call that folder base. Here in the code base. And here in the base folder, I'm gonna create a new growth file. That's fine. It's gonna be researchers. Wanted to make sure that I think that I did. Framework, common resources. We had everything. Recommendation I'm going to put here. We'll cases. What we want here is to head up place where we can easily modify some things from the automation. Selenium. I already is gonna be our library. Here. We are going to create a couple of variables. What are those variables? The first one, that is almost, we are almost going to always different kind of ways to run our automation is with the browsers. So we're going to create a variable called Browser. For now is going to be Chrome. The other thing is that you have in your automation and environment, because when you are working in a team for so far, the battle for them, sometimes you run in an environment that could be, for example, QA that we installed Castillo that cone or death that Winston, another environment could be staging that witnesses on, all of them has a kind of the same the same system, the same, the same application. But what we do is for sampling the death state in the data and vitamin we got all everything related with the development. So we got to know more data or trash data. And in the QA and vitamin for example, we had some information that is closer to the one we will find in the staging or production. The purpose of having being able to change the environment needs to provide the ability to your framework to run. Everything again, isn't going to isn't gonna be a problem if you change the environment. But now we got only one environment. That is, that is this one. When we run our automation, this is hard code. We should not do this. So that's the reason I'm gonna copy this. Put it in vitamin. The last thing that we usually do is we can have different folders for the screenshots. So I'm going to create a variable that I'm going to call that variable is clean data to me is the common case. Here. What I'm gonna do is for now and then they use the same scream. Screenshots. Gonna be my folder where I'm gonna, I'm gonna include all my automation, my screenshots from the automation. I mean, yeah, That's all for now. And however, you can have different like different resources that could be shared along your automation. It's up to you. This is just an example. So the next thing we have to do is with our automation. Now I'm going to create a test case by 000. I'm gonna call this, this case that said, I'm going to attack this as an smoke smoke too. The other thing that I'm gonna do is I'm gonna run that keyword. And that is called set screenshot directory. I'm going to use that thing that I'm going to do is I'm going to use them, vitamin C. Use it here, control V. And then I'm gonna do is the browser. That's pretty much all that I had to change. And the other thing is that I had to include this file into the resources. So I'm going to copy this one, paste it here. I'm going to replace page object because it's not in the base of the base folder. Find this common resource or common resources that I think we are, right? I, now, if I go here and I run my automation with robot cases, I hit Enter. Everything is on the run as usual. We got here, everything is pretty cool. That's all. But the great thing about the framework is that, for example, you just want to run those those test cases that only had the smoke. You run this command, robot, dash, dash include. Then you just, you just type test and you see everything that is going to run the test cases which has tak tak smoke. If you see, it never runs this one. Let's go for the test cases. They close browser doesn't run the rest of the test cases without the The attack. But for example, if I want to close the browser and I include this Control C, to close the browser. When sample here. I tried to run everything again. Now it's going to be close the browser itself. You see, that's all. It's completely easy, but let's assume we don't want to. The other thing, if you see all the screenshots, the new screenshots went directly to this folder. Another thing we should do, for example, if I want to change the browser, I don't want to change it. I don't want to use Chrome. I want to use, for example, edge. But I want, this is one of the challenges you had to find out how to solve. It is to run it with with another browser. As I told you, you should have the driver for that browser. If you see here I had the Chrome driver. But if I wanted to run it with age, I am ready at my path for this folder. I got the driver here. For example. The driving force is this one, EMS edge driver. But that's gonna be your challenge. Do you have to download the driver and tried to run it with another browser. But the thing here is I just want to change for Chrome, but I didn't do not change anything in the file. I'm gonna do it directly with them with the command. And it's something simple and just type robot. And then I just say national level and I provide variables. I provide the name of the variable. I want to modify his browser and use column. Here I'm going to use the way that row and recognize another browser. For example, if I wanted to use, I just write edge. If I wanted to use Firefox, I can type death, death, or if those are the way you can change the browser. However, I came too hard to find out how to download the driver and just copy that driver in. The folder that you already add in your path is not complicated and you can go to the video when I did that with Chrome is exactly the same but with the driver for edge. Now I'm going to put H here and test cases. And then around it. You see, now it is being run by h. That's all that I changed. I didn't do anything else. So that's one of the benefits of creating good automation and robots. Automation, you don't need to change a lot of things when you are trying to run your automation with different browsers or with different vitamins. It's supposed to be simple to you because the automation is created with that porpoise. That's everything. Now it's time to racism things with relative framework. What we're going to do with Gutenberg is to overview how we can create it. Automation in Cucumber and explain everything as I explain the product framework. Because I really want you to understand why I decided to go with the different things that I am going to do in the automation. I really want you to analyze what are the reasons you decide to create your code in a way that you create it. As I told you, this is a model when you create different layers for your automation and put everything in the same file. That's not really cool when you are creating code. Most of the developers call that spaghetti code because everything is mid set. That is not great, that it doesn't provide a great impression about your skills with automation. So here we got the different things that you can use for animation. I'm going to show you how to replicate this cucumber. And after that, we will go for some questions and the final challenge to you, I hope that you enjoyed this class. We had been working for too long hours and I hope that you have enjoyed the class. Let me know how you feel creating this. And I will see you in the next video. 16. 11 Compare with Cucumber First Part: Here we are. Now it's time to do it subtly, the same things that we did with broad framework. Now we are going to whip cucumber. So the challenge here is that I'm not going to spend three more hours teaching you. Not, you should include your automation and the way that you have to create your framework with cucumber. Because I think it could be time-consuming to understand everything about to convert. This is not a class to show you how to use glucose at all, is just an example. And I really wanted to compare both tools and how you should create from now your automation. What are the aspects I want you to care about? When do you create automation? The thing about Gutenberg. Gutenberg is a tool that is more behavior thriving framework, behavior driving framework. What we tried to do with cucumber is to understand the business perspective. And we try to put that into our animation. Here when you see, for example, the things that we did with ROD Framework, we usually create our test cases for an input tests and information. We use keywords to help to understand what are the things we do on our animation. Those keywords are usually actions that we've been farmed on the, on the code. But in case of cucumbers, we are going to see behaviors. First, we need to download Java. So my advice to download Java is because of legal, let's say legal Terrence because Oracle, after yada. Absolutely. Both. What are called both Java and everything that article created to how to pay for that. And here you don't need to pay anything. If you download a version less than eight, you can use your code free, freely. And you didn't need to pay anything in the products that you create. As a developer, you don't need to pay anything. You are creating a product. But when you create a problem, when you actually then compile that code and create a product, you have to pay. We are trying to avoid that. That's the reason I recommend you to download Java. Gdk. You can download whatever you want, but I really hide. I highly, highly recommend you download this one. To download you just go for this website. I usually take Java, is decay. I can download it here. All that you need to do is to go and download the version for your computer. Not gonna download it because I already have it. Either I'm gonna recommend you is either forum for thumb. This is a four term that also work with Java eight, that absolutely Stella one, that eighth. But from the version 88 and I had from that version, they removed the first number than one. And you just know about Java, java ten, but it's absolutely Java one that night. Java one that ten. Things that happened in their development work. However, just go and to increase it. That's the e that we are going to use for cucumber. And after you download a cliff and you download the Java, made sure you add Java. Just go here. And you can type Java sample. And in the configured Java, for example, you can open file location. You can go here and open it with the Java location. With this location, you are going to need it and add it to your path. If you don't know how to add up vital environment, you can go to the video where I explain that. But I need you to actually Java to your path. Make sure you aren't ready at Java to your path. You. Once you have that you're going to do that you are successful. Because when you try to open them, are going to be able to open it because you're already includes yellow. If you don't or you had questions about these, please let me know. Please make a comment in the comments of the video. I can create another class explaining this. But it shouldn't be something easy because you already did it. You already added the path variable. It should not be difficult for you. So for now, once you get everything in your, in your computer, what we're going to do to start using a converter is we are going to create a new project and we provide you the structure for your automation. And again, what we are going to do is to compare what are the steps you have to do in order to create the same automation. But we could convert framework. The challenge here is that it's gonna be up to you the way that you are going to create everything. Now, what we are going to do is this. We are going to, you should now the first time that you open your cleat say you should not see anything of this. But we're going to do is to go here. You are going to give up right-click and you're going to create a new project. But before clicking in everything, go to order. Here. What I want you to do is to create a modeling project. Marlin. I want you to create Marvin. Select the last one here. Played on nets. Here, I want to create a simple project. You create a simple project, you can skip archetypes. Archetypes selection is going to provide you the whole structure. But we are not going to use a lot of time providing details about this. Again, what we're going to do is to compare withdrawal the framework, how difficult it could be to use cucumber and what are the differences about using it? These instead of ROD Framework. That's all that I had to do. Once you do that, you can click on Next. Now you have to provide a group ID and the ID, the group ID, we're going to say something by automation. The artifact ID is gonna be the ID for this. Let's say for this project, I'm going to write here Skillshare class. After that, I'm going to click on Finish. Here. We got the projects. Everything. When you were creating enrolled fingers, did you remember that in the space when you actually add all the libraries that you are going to use. Here, you have to do the same. You have to add the libraries to your project and add the libraries for b to be able to work with cucumbers. Before continuing, you are going to go for the help menu. Once you go here, you had to go to the athlete's marketplace. Here. We are going to download a plugin to work with Cuk converter because it's gonna make easier to everything. It's gonna be, it's gonna make it easier the way that we create our, our files. And it's going to give style and it's easier for you to create an automation. Having in mind that when you are going to do is to title. After that, you just hit Enter. You're gonna see this plugin. It's already installed in my computer. You should see something similar to this one like install just, you'll see it here and just install that. I don't like this one natural 0 that night a lot because he's not that great as this plugin that provides you a lot of callers and guidance with the automation. Just click on Install, and that's all for now. Well now we need to add the libraries. This is going to be easier to you. No worries on that you need to do is to go to Google. Let me open here. I'm going to download cucumbers. I want to tell you that you are going to need two things. The first one is cucumber, GBM for Java and Gutenberg DBN JUnit because cucumber is also inspiring JUnit, the same light, for example. And there are another framework that also provides you some steps that is called test and G that we use. Rarely use that with, with Selenium. And it's more similar to ROD Framework the way that we use it. So that's the reason I didn't use test because I really want you to compare with behavioral driver framework. Here, for example, we got, we need to add this library. I always recommend you, maybe when you see this class, you are going to see more numbers here. But I always highly advise you to use is tabled version. If you see that here you have vulnerabilities or say something that maybe the version is not installed and it's a beta version. I don't I don't recommend you to use that. Tried to use a Starbuck versions. And in this case I'm going to use this last version. Everything that you need to do is to copy this, copy to clipboard. You see here you had to add dependencies. And to do that, you need to do is to add dependencies, dances, okay? Then you need to close that in these ponds side. Then the thing about using edit first, I'm going to paste a copy. That's all that I need to do to your library. Once you add a library, please clip onto the project and made sure that bill automatically is check. It wouldn't be important because all these libraries I'm going to be downloaded once you save your file, is going to start the process to download the library. Now we got it already download the cucumber Java. Now we need the other one, that is gutenberg, a unit conversion unit. Let me go there. Convergent unit. I'm going to use JUnit two. I don't see that the unit is here. I'm gonna need it to run. Welcome back onto me. Out here. Junit. I'm gonna need that unit. Unit. This one is the one that I'm going to need for malware unit. I think. You'll see it here. Let me check it out. Dependency. Dependency. I didn't know. They didn't concern about these. Get out that the library is correct. Unit API. Sadly the same one, the j q and the version. You'll need. Let me check it out. This one. Yeah, this is the one that I want Control-C because APIs and other things, so I'm not going to use that one. I'm going to remove this. I'm going to add one. We already had this. And I think that pretty much o and last one and the last library I'm going to use Selenium. And you're going to this one. I've already downloaded it for you. Most of the things I'm going to be a challenge, too hard to create the address of the automation because one I'm going to give you here is the structure. You had to figure it out with selenium. However, if you feel that this is really complicated, what I'm going to do is to provide you the whole the whole automation already done for you. And you aren't gonna be able to convert. Here. You also provide the Selenium library. I think you got everything here. Just save. Once you save everything, the next thing you have to do is to go to the end. It's ARC test Java. Down this folder is where you have to create all your automation. This is because you should integrate this with the project that the developers aren't going to do. In this case. That's what I want you to understand. All the automation that you are going to create is going to be incorporated to the work of the rest of the team will be rows because of that reason. First thing here, we are going to do etc, the same things that we did in our broad framework. Automation. But here we don't need to create a torus. What we are going to do here is to create packages. The first package I'm going to create is gonna call, I'm gonna base, you know, what are the things that you had to create there. And then it's package, we're going to create a package for the Cuckoo, cuckoo bird to be run. So I'm going to create that convert runner. And here I'm going to create the class to run everything. Dollar package I'm going to create is feature package and step definition backlash. That's where is the biggest difference is one I'm going to explain here in this class. We are going to do is to create a new package that we are going to call feature. Features. We can just make it like feature. Others. Again, thinking what would be the base name, but you aren't going to. I think it's better to do with the S and the N features finish. And what we usually do the features is going to be really simple to you to do. If you actually download the plugin. Here, what we do is to create the things that we did with the, with the keyword like the test case. But here we are going to do language that is called Jerry chins. If you get right-click here and you just create a new file, you're going to be able to create a future files. Remember, go here rightly new and try to create an order. And after Euclid on order, try to look for future of file. Gonna show something here, but it shouldn't be. Your salary. To create the future file that you need to do is feed in new, just great on file. And here you can do something like, for example, the homepage, that future without the once you click on Finish, we went to receive that kind of template like this one. So I'm going to explain this as plain as fast as I can. Include the tabs. You already know what is attack about, what examples you can use, functional or something like that. And it's gonna run everything that you see here. But we are not going to use a dot here. The future process, a suite of test cases, is the way that we create the sweets in Robert framework here. The future. Sadly, a set of test cases. You can have different scenarios on the SNR is I'm going to be the test cases. So in the future we can hear cases for homepage. Hearing the tag, I'm going to use functional. In the title off of the scenario. I'm gonna dive here going from Page. And I think that's the value. Here is the biggest change with the way that we usually do things. And robot framework, because we use here at business language, is more about behaviors, more than options. For example, given I want to I want to grab a step. Would break condition. Given with side BC turn. What happened when when I see contact? Okay, I can remove this. Then. When I see the content link does something here because I think doing, obviously, I see the content link. The wind is going to be the option. I see the content link. Wayne, Contact Us. Form. That's what we do on our test case. Here. We had everything that is related to the test case per cent. This is a biggest change withdrawal framework. We usually create everything from the behavioral perspective. We can do exactly the same with the Contact page. I'm going to save this in the future. I'm gonna create another, another feature that I'm going to call that future might contact us. Finite is going to be contact that future. Finish. And again, any hot the template here, I'm going to change the things earlier because we are not going to use Control C. 17. 12 Compare with Cucumber Second Part: Control C. I don't want to use a scenario. I'm gonna use that scenario applying. The great thing about these is that the framework also provides you ways to include that driving testing. You don't need to like create another another file when you had to load that file and interpreted it with code. Everything you have it here. So that we create. What you have to do is to put all the data here. That's one of the benefits of using cucumbers, that is, thing it was thought to provide, to provide you tools to create that arriving tests into. The biggest influence we had been receiving because of the time we are spending with quality is that all many of the frameworks out of being created to solve some problems. That's the great thing about our career, about computers. When there is a problem, there is always a solution. And that's what we do with the Gutenberg. It provides tools to make it easier to understand your automation. For now. Going to do in the contact line is providing the future something like here we create automation. I'm going to remove this line and the scenarios. I'm going to use this Control C. Let me share. What I do is given in the contact page, when I see the foreign and fill the information for username, user email with the user in quiet. Then I send the information and I returned to the Contact Us page. I see different sides for n. I'm going to them. So the other thing that you can do here, now, it's going to be easy is to change the vowels here, so it's not gonna be name is gonna be username. For this example would be, it's not gonna be, it's gonna be bottled, it's gonna be useful email. And it's not gonna be, it's gonna be this one. Let's see. That's pretty much all. We also can my load. The data that we create for. It tells you everything that you have to do here is to replace these data from the sample name. And the email could be quite, it shouldn't be something more like ten, there's some charts. I think when I went to Central, anything with this one. Again, remember that this is data arriving testing and you should be aware of what is the purpose of having this copy and put it here, b, c, d, and tonight use here twice. Dan and sender. We can fill it out with more data here so we get fun examples here, the data and it should match with here. Mostly we had most of the things. These are absolutely things that you had to program absolutely. Create. To create those, you are going to need another package that is called a step definitions or steps. That's a package. I'm going to create this step, the free nation. One other thing I wanted to tell you is Java was zoned for developers. So it's gonna be completely different to use in Python. Because Python is it was created for people that were not really involved with programming. And that's the reason it's highly used in testing. But Java is strong language and it about classes and objects and programming with jets. It means that you shouldn't have that really strong value per mindset. This is not something that is going to happen in one class for three hours. Sometimes it takes longer. At the core of learning for Java could take light one year and a half. So no water if, if this is really complicated for you, that is suspected. But the reason that we use that anti to teach you in this class how to work with cucumber. I really want you to understand that it doesn't matter the tools that you use. What it matters is the way that you create your code. Here we got the step definitions and here we need to do that instead definition file. What we can do here, for example, we do and again new. And here you can actually create a class. But I think if you, for example, go to order here, you can tie cucumbers. Not here. I saw Euclidean instead definition class and you can create that 54 step definition class. So once you create a state definitions, you can absolutely create a name. Scripture. Going to, I'm going to step description. You can click on Finish. Here. You had to describe what are these steps about. A tool that is always useful and come handy to know is called tidy gherkins. Gherkins provides you the code and all that you need to do is to type tidy your chins. You can download that from your app is kind of an obligation. Once you download tidy 13, you actually can your obligation in here. So you can go like in the application and all that you have to do is to, is to copy the tiny thing that feature that you create for to convert, you just copy here. Control C. You can paste it in the application. So minus from tiny brush. You can type it here and make it in Java steps. And all that you need to do is to copy this. It simple is gonna be easy to do to create it. So copy everything here. You'll finally have the steps that you are providing for your GPU convert. Just copy here Control C, and go to your state definition file. Here, definition file and paste it. Control D. One of the things that were happening to me, The bomb, i fits it. Fits it is that I changed my version from cucumber and change it to the seats that 11 that 0 to both of them. Because it seems I is not present in any problem with the libraries. I highly recommend you to use that version. So let's continue here with the. There. Instead definition. Here I'm going to import Given going to import the class. And here I'm going to import the wind. Then. This is something that you had to do every time that you are working with Java, you have to import all the classes. This class, something that I'm trying to figure it out. How to how to fix it. Maybe I don't need TCT. Here. It seems like it fits it. I'm going to remove this. Also. Provide any, anything else to my animation. Also, I'm gonna remove this. Here is everything that I need to do remote the round with, not gonna be necessary here. But however, we are going to use it in another file that sine is going to be here in the cucumber runner. Okay, so the other thing that you have to do, for example, is with these features, is also to create another, another jerkiness with this scenario outlined. Everything that you have to do here is like coping definition. Here. You have to copy all of these Control C and then go to here and try to base it here. You're going to receive the order. I'm trying to show something for you. This not this great hard to see here. Trying to mold and to show you that I want ID here, let me go to the first line that you had. This. You just paste it here. Then you have all the given here. You can copy, paste it. Basically in this definition. You can paste it here. Remove again on this. Because in this part you are going to include your code for this test that needs to be done by code. And again, this is something that you are going to be able to find in the repository. And the biggest concern here is she will be describing the behaviors because that's the reason we use converge. With this done, we already done this. The next step here have to be cucumber runner. In the cucumber runner, we create a test runner class. We create new. And here the mean is gonna be test. Here's where the magic happens. It is rather Spanish. What do we do here is simple. We create the round width, one that I was not using before. What we do here is we use the tag. This is something we call injection. In. Mostly. Here we can use the convert, convert that class. That's something that we need to do here. We need to actually import the wrong. Then we can import the Cucumber. You see that you get rid of the error I have I was having but here I need to give to provide a cucumber options. One I'm going to do here is my options. They could convert options will give users convert input. Options. It will give to our framework what is the principle and the dose at the steps. So here what we are going to do, we create in futures, we need to provide word are the features which are, where do you start information for your programming? You put here, like me. What do you see? Here? You put here dance ARC slash. Then it comes tests, stretch, Java. And then you provide word our futures. And you put here in-depth case you can find the features and where their behavior is. Grading. Now here you use glue. The glue you will provide where are the steps definitions for that unit? Use the name of your package. So you just use here munitions. And after that, you need to do this step notifications that this final step. It is because I really want to see if everything goes well when I run my, my framework. The standard definition, we are going to set it to true. And we are going to receive a report of the way that my arrow mention was run or was run. Everything that I need to do here, right-click and run as JUnit. And once you do that and I need to save my older files, I'm going to click on Okay. What I'm going to receive is this panel, when they'd receive if I receive an error or if something failed. At this point, I don't have any any of the code. This is the template for the things that you had to do. The different thing is that you are now working with Java. And it's much longer different than working with Python. Again, we had this structure. It can be trickier, complicated, but no worries in the repository you are going to have all the information you need for these classes and under gonna be dated these class with your comments. And if you had anything that looks really complicated for you, don't hesitate to ask me to ask for more explanation, clarification on this. So see you in the next video. 18. Extra Step Mac: After installing Java, configure the JAVA_HOME: A quick thing you can do with your Java Han, because this is another anestrus step that you had to do in Mac in order to make run your athletes. So what you're going to do here is just to tap window is space. And then you can type terminal. The other way that you can do this is through these magnifying glass. You just click on the Search icon, the magnifying glass, then open the terminal. You need to know where it is Java. So you can type which Java. Here you are going to have the exactly where the where the Java Security file, please. After that, what do you have to do? It simple, It's sudo nano. Nano. Then you are going to add these command to access them file to add the Java home fire. The fancy thing we do with window, where we, where we actually at the vitamin variables. That's what we do here. What do you have to do is to type this command as port Java under a scout harm equals you had to do it. It's aptly with the with the location that you receive from, from the which Java command. That's all that you had to. You had to include the Java home variable, then you just press comment and I think human control it, sorry. Yeah, I think that's all. I think that's all that you had to do for your set the Java home, by the way, that's all that you have to do. There is not any extra step. You are going to verify that you can really make it correctly. Just typing echo, dollar sign Java, capital letters, java code. You should have received this or something like this. That's all that you have to do. So now we are ready for the next steps. 19. Extra Step WINDOWS: After installing Java, configure the JAVA_HOME: After you install Java, the next thing you have to do is to verify your Java home valuable. For now. The only thing that you have to do if you don't see the Java home viable is to edit by here, just type on New and you can add it. Then you had to type here, Jabba underscore. Underscore is, it is here. After that you have to type here where it suddenly Java EE is. If you want to know, Java is all done, you need to do is to type here Java. And you will see this brown command. But you can actually open the file location. Once you hand the fight location, you can copy this location, copy and paste it here. And I'm going to do that process. I'm going to cancel it because I already had my Java path variable here. Is there anything that you have to the other step that you have to do after you install Java and you know how to, how to access the system vitamin, right? In any case, you can just type m by enable. You will see it by edit the system environment variables, variables and allegedly to do is to go to vitamin variables. And here you will see the option to edit it. That's all that you had to do after installing Java in your computer to make it run. 20. 13 Creating the selenium code to integrate with cucumber: Okay, now what we are going to do is to create the simple animation with Selenium library and then the mature a lot of their way I am created the framework. What we're going to do now is to create a class and run the automation. And then, then it says step that you have to do is to create the good practices for anonymization. So what we are going to create a simple code here. I'm going to create a new package. Package. Here I'm going to use test cases. Test cases. This is the package. Finish. I'm going to create a temporal science. This is supposed to be modified by you. We're gonna add all day coal to make my automation word and do a satellite. And same things that we did in our last automation with robot. We clip and we are going to create a new class. And in order to make it run with and without having the whole stroke is structural base classes and put everything running. The same word. Asked us to do it. I'm going to create our public class program for Java. And I'm going to call this my homepage. Let me sanding. I'm going to call this class information here. But we are going to do is to add all my code inside on this. Here's where we add the commands for automate everything in Selenium. The first thing is we need to ask the system property to let know where the driver is. This is kind of the way that we usually set that I were to work. This location is where you actually save all your diverse. If I go here, let me show you that in my unit D, I had a folder that is called driver parent omega Doris. There I have the drivers. They will plan on. I have it here from drivers. So I had to keep all the location, the whole location. For Java, everything that you had, this slash, Jew had to add two of them. That's the way that Java is going to interpretation. And it's going to understand that this is referring to 11 only a slash. This is the way we do it with Java. There is not any other explanation. The next thing we are going to do is to create with our driver, that is the web. And it's gonna be the driver we're going to work with. This is new. This is new. This is a way that you actually instantiate objects with Java. My gosh, let me change this to Spanish. Maybe that tell me. Currently I am because I'm siding with the keyboard. Normally with Java. We need to every time instance CAR class, we had to import the class to our code. So what we're going to do is to import the web drivers. And then the crown drivers. Drivers should be with a capital letter when indeed, one of the things here that I want you to tell you about Selenium, selenium incorporated or smell things you knew ASL and saying things to make possible when you are working with gaba to access different methods of the classes. This is not a class about, about Selenium, but we are going to use Selenium. If you are interesting in knowing more about Selenium with Java or Python, I can create a class for you, but this time is only about being robust. With our automation, about robustness. Don't care so much about the Linnaean. What I want you to do is to create a robust framework. Here when we aren't going to do is to import also the class for the Chrome Driver. And after that, the driver to open the website. So I'm going to use get. That's the methyl to open, to open up. One of the things that I liked the most is why from using idle is that every time you aren't going to receive some suggestions, what are the methods for the, for the object that you create and instantiate it. This is really, this isn't anything about object programming. Java is all about programming, so that's a mindset, that's a way to program. And also is the way that you had to program everything insulin. We're going to do here is we will going to provide the URL that is going to be this one. With that, our automation is going to open this website. The next thing we're going to do is we aren't going to do an answer to verify that actually, the title of the window is gonna be kinda Winston Castillo. In case in case. The title for the window is not that one where I went to receive an error. That's the reason we use assets. Okay. So that's going to do is an ulcer through here. I'm going to add my condition. So here I'm going to deprecation. Yeah, I think so. But it should not because maybe this is referring not to not to, not to Selenium. But however, I'm gonna go to dinner with my code and then I'm gonna fit States worries. What I'm going to do is driver get title. That equals. Again here, I'm gonna add stdio. We are done. This is because these taken the assets from JUnit. That's the reason it's saying that the assets duplicated. What we're going to do here is we are going to add the assets for remove this. One I'm going to do is to add the assets for tests and G. Using assets because I learned one to verify that the title is that is the one that I need to. Do. You know how to add a library? So what we're going to do here is to go to Google and we're going to type test. Angie. Don't care so much about, about these. Again, because this is we are creating this code just to use that pole one, not this one. And I use this without not too much vulnerabilities. I'm going to copy this and I'm going to add it in the form fine. Here. After the JUnit, maybe. I'm going to do these only to create an automation more common. With what we do with Python. We are going to only use this AND gate for the assets, but not for anything else. Okay. Here we go here. And then I'm gonna see that we want to be able to use the assets Frontex and import access from JUnit. I don't want I want to import axes front test, NG. So we get rid of the error that we are going to do here is to prove that the title for this is I think that's pretty much all for now. Let's continue with more of their more of the steps we are doing. Let's move on. Next thing we are going to do here is to the Contact Us link, right? So we will do exactly the same driver find element. That's the way we find things on our website. Again, we will buy. Then we type blink test. What is the intent we use in our robot framework automation? Contact Us. Thing we will do is to make sure we are on the right. Our title for the for the for the window is Canada's driver. That title. Title then equals. And here we will do contact us pretty much all. Then we will send some information to the four that we see. So driver find element. Here is Bye id name. Do you remember this input? And after that limit of the methods since key. Here we type what we're going to send 01. So let's sample is fine. L. When I went to use input email. All right, I'm going to copy this. Put it here. And here is input. Email me, I'm going to send here is the user and the e-mail. I'm going to type here. Cr email theme we are going to do is to That's sine element by ID, IDEs. And then I'm going to send keys. Same keys less than metal. I'm going to use. What are the keys that I'm gonna send is this is an inquiry from more than ten charters. Habits here and assignment. We had to sand the that information clicking on the blue tone. Here what we are going to driver find element by its path. Here I'm going to use the expression, going to reinsert spot here. This is not the path. The classes. Can we build this? This is the input. Okay? Yeah, that should be all. Let's run this. See if that works. If open then actually this open our automation description. The mirror image of this because I think the problem here, save this. Here sending information, you should not see any error here. Save it. After that, let's run it to see if this work Run As Java Application. What we're going to see is our automation working. This is working and you can prove that this is gonna work and it sends all the information. But this is not the best way to create another rotation. So here's the challenge for you. If you are able to do it, That will be great. Otherwise, you can see the results of the videos and you will see how to solve this step-by-step. But at this point, what I want you is to move all this code and created better adding here the beach off debt model, then also the base class. And make possible with the cucumber runner to run this with different by different ways and create a report log file to see what are the results. This is everything that you had to do, but in case you cannot do it, you can continue with the class. I will teach you how gender is pretty much all for now. 21. 14 Dividing the code in layers: Well, here we are. We need to now create the liars and everything. We need to set our framework with cucumber. Yeah, The first thing we should do is to create the packages where we are going to incorporate our new files. So you should create a base repository for the pitch of the model. In this definition, we will introduce all day a different kind of steps we prefer in the automation. Make sure that you are already at, in your poem because you're gonna need it. You add JUnit that you at Google. And also test NG. That the right way to pronounce that it's cucumber. Yeah. I think we are already set, so I'm going to try to create that really create base file for you. Let's just start with it. Here. What we're going to do is to create a new class. And we're gonna call this class base because it's our base class. And again, the reason to creating a base class is to be able to provide our way everyone's true words. Your automation, also use always the same automation, the same variables and everything. Okay, so first we will create the driver. We will create our drivers. Driver we're going to use. Let me change here to Spanish. The keyboard. Mistakes. Yeah, okay. I need to import driver. I'm going to import Selenium WebDriver. Done thing. We are going to this protected stream. I am using a string or protected. It is because I'm going to use these variables in different parts of my automation. Because I'm going to access these bottles in different files and I need to set them as protected. Here I'm going to use my default. Again. Something that you're I DO provides you is a way to create the getters and setters and also is going to add is going to provide you the way that you can also create the constructor class. But we're going to do is only the getters and setters. You go here for soldiers, search, generate getters and setters. Going to use a gerund serif or diver and browser generate. What we are going to do here is I'm going to remove they want that. I'm not going to use. For example, here in set driver, I don't think we will absolutely use a driver. You should not touch this, but this one absolutely. Going to try to do the code for the different browsers. I'm going to copy and paste my code here. I'm going to explain you as fast as I can. Control-c, Control-V. Here. What I'm going to do is to create a different kind of browser, depending of the vows Her am going to use, for example, here on using Chrome. But for example, if I change it to five for H sat in here, what will be done in each case? These are simple code and here what I'm trying to do is to set the browser. Now after I said the browser, I can receive a different browser. Yeah, that's all I'm doing here. I'm going to import Chrome. Board five-fourths. I'm going to pour primary. I'm going to show you how different cool worth depending of the browser. But that's all that you had to do. We actually. The getters. We absolutely set this set driver. We should have asset browser. Yeah, nice one. In case I want to change the browser. All I need to do is to, is to change it in my code. In any case. I think that's all for now. Next thing I had to do is with repository. But before that, the repository, we are going to the definition file here. At these files should match with my features content us on homepage. That's exactly the same thing we will do with the with the, with the repository. In case of repository, we wouldn't need to create the friends fives. The first one is for homepage, and we will call this one homepage element. I'm going to use homepage element elements, okay? And I'm going to add this class here. Finish. The second one is gonna be the contact elements. Contact. Is it Saturday, the same thing that we did with broad framework? We are doing doing the same thing here. Didn't cucumber, not a big deal. Hearing their homepage means what we aren't going to do is to create a homepage elements that we absolutely interact with. For this, I'm going to use my WebDriver here. I'm going to need it. Needed here. In all the object model, we need to use what driver? Driver. Because we are going to take elements from the WebDriver, is something that we call the beach factory, is to set all the elements on the homepage. It's going to be part of the page of your model. Here you can use search and you can generate constructor from the superclass. Generate. Absolutely, you can remove this part. Here. What you aren't going to do is to ask the driver because it's the only one thing you are mine. And then you had to create your base page factory. If you want deeper class about pH optimum model, I can create one in my, in my classes here on Skillshare or wherever. This is not a class about creating a page of your model. What I'm trying to explain, just say admin touch to have your code divided in different parts. So that's the reason and copying and pasting my code. In case you need more explanation on this, I think you should go for one of the classes for page of your model. This is highly years in the QQ a word. This is a way to create liars and everything should be easier to modify in the future. So I had to say here in the in the Contact Us page, I'm going to use for the Contact Us element. I had to do etc, the same thing in contact. I just wanted to make sure that the homepage elements are okay. I just did it from the homepage elements. This is okay. Because the Content link that is the homepage here in the Contact Us element, I'm going to paste all the Contact Us elements we will use. Here. We need to import all the classes, the content elements. Remember, we are working with Java and Java worlds completely different. Definitely Python, where everything is easier. For example, to do the same things here in Java, you need two lines of codes. What I want here is to show you how you're absolutely sure. Automation will look like I think we are done with the Contact Us and net description. So we got the contact page, I click on the Contact Contact Us page, I see the contact link. We need to transfer these, all of these into this steps descriptions here. One of the things that you are not going to see in the absolutely anything related to related to Cuckoo, cuckoo number is that you won't be able to see how to create base classes or every cell. So once you create a base class, that you need to do is to create an assumption. You type instance. And after that you can type the name of your class base. Then you will import. You'll need to import the base class. So in that case, everything related to the diver driver browser, you can also use it in this definition class. Definition class. I highly recommend you to use one class that is called before. One class at is called after. Under. What you are going to do is to set all your drivers and for example, the beach of jet elements. Here, you can absolutely set the browser. What I'm going to do here is use your browser. That is the, is the variable that we use here in me, save this set description. And then I use important after. Everything here from before and after is going to be run. Every time that we run all of these kind of everything. Every time that we run a given. It's going to run these after, before. That's the reason I create these. Sanding the driver to my driver and the homepage element, I need to also import this. Maybe it is because creating. So what I'm going to do here is to create the variables. The beginning here, homepage element that is going to be object from the class. Homepage elements and Contact Us element is going to be an objects in the repository. Yeah, That's all that we had to do here. We have the before, the after, and then we need to move the extents that we have here into each of the each of the staff definition we got here in the before Friday to create all the variables you are going to use here. And doing the beach often model. In each of the sets while I incorporate are the steps for one, describe with veins. Yeah. I think that's pretty much all. I want you to run this. And one important thing is that in the base, for example, here, when you actually asked for the gate driver and you copy this code, make it gratefully. I did it on the, the browser. The browser is only the name of the browsers you are going to use. So it will return crown or the one that you actually right here. Here it is absolutely the driver. What is going to return. You are going to be able to reach these code on the, on the repository that I create for this class. The good thing about these is that you have everything divided in layers. After that. One I'm going to do is to run from cucumber runner. I run As JUnit tests. If you see, you are going to see that everything is running correctly. Is also divided correctly in this class is only about robots. Again, if you want to go deeper into cucumber or robot framework, you can go to order of my classes. And the great thing here, for example, I tried to run it after with age. You are going to see that I don't need to do anything else. Then just type in a new name of their browser. You see, it was run everything with Chrome. And now I'm going to do it with H here, type edge. And I'm gonna save safe. And here in the Package Explorer when they tried to run it again with not run as a JUnit test. And you're going to see that it's going to be running H. Let's see. We got, we have it with other with other browsers. And yeah, that's the beauty. The beauty of having everything in ages. Unimportant thing is when you are working with page object model, be careful, but all the other fine elements with selenium are in the same file. You should not see it. Find elements for the sampling. In the state definition file. All the elements shall be in the same side. So in case something changed, you can go directly to the page of elements repository and change it. That's all I hope that you enjoyed the class and this is what I got for you for dividing the code. Remember that you had access to all of these material on internet and I, and adding the links for the repositories, you can download the code and make a second look on this. And yet, that's all. 22. 15 Thrid Part: Questions and Challenge for you: Before running the last and final section, let's answer some questions about the class today. So let's play a leader non-linear or omission framework. Do you need to know how to code? Will be the answer? Yes. No. I got good news for you. No, it's not necessary to know how to go if you are working in a linear or a mentioned frameworks. And the reason behind that is because these canyons frameworks record your testing when you are performing your testing manually, and then you can and do that and replayed in. So it is not necessary to know how to code. And, but those have those types of frameworks also have their benefits. And also some say contrasts. And yeah, not going to provide you the opportunity to create an ROS framework, for example. Some of them provides you and the structure two, modify. That's not the reality for the majority of them. Let's move on to the next question. Is ROD Framework behavior driving framework? So once your answer yes or no, the answer is no. Relative framework is at keyword driving framework. Set by the age of code in ligers will make it easier to maintain it in the future? Answered yes. No. Being kicked twice? The answer is, of course, yes. That's one of the guidelines you have to respect the framework in the way that you create your framework because the future is going to be easier to separate. So to maintain and modify those files, which contains the elements you have to modify, that it's easier to maintain your code in the future if you decide to sit about aided in eight years. Move off to the next question. To make your automation grown on work, it isn't necessary to respect the guidelines of the robustness. What do you think? Yes or no? The answer is no. And maybe you are confused. You are thinking, why might the answer is no. I'm going to answer you that really fast. Then resume behind that is that you don't need to create wires and self-care your data and tried to lock your your your reports and log wife, but he's failing your elevation. Your automation is going to run. Even if you don't respect that, is not a good practice, is not the best way that you can do your work. But at least it's gonna run. But we know that that's not enough when you are working with pro people with you and working with professionals and in a team, you should provide solutions that are able to be adopted for the whole team. So that's the reason it could run. My doesn't mean that it's good enough for for for our senior team. So try to keep that in your mind. Let's move on for the next question. In this question is, I got the framework requires a good design. When do you think about that question? Yes. I don't know. The answer is yes. It is necessary to have the sign. So I hope that you answer all of the questions with the right answer. And let's move on. How did it go? Did you answer all the questions correctly? I hope so. In any case, you can re-watch this class as much as you need. If you feel ready, we can start with the last step shown where you will find the challenge for you is time for the leader challenge for you. It's just something simple. So feel confident you can do it and isn't gonna be something really complicated. And here's the challenge. In the, imagine we did in class. The first thing you have to do is download the driver for another browser, save it in a folder and ready, You ready in the path. You add that folder in the path and make your automation run in another browser without touching their code. That's all that you have to do. That complicated, It's not hard to do. Good luck. And it's time for you to modify what we did in class. We are set. Did you enjoyed the class feeling ready to create more automation? Do you already feel confident with cucumbers, with Robert? Let me know your thoughts in the comments and feel free to watch any of my other class and comment often, I am recording some of paying again, so it will be handy to consider your feedback when I work on the new videos, See you in another class.