Become an Automation Tester and Sell your skills | Qambar Raza | Skillshare

Become an Automation Tester and Sell your skills

Qambar Raza, Engineer + YouTuber

Become an Automation Tester and Sell your skills

Qambar Raza, Engineer + YouTuber

Play Speed
  • 0.5x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 2x
9 Lessons (47m)
    • 1. Welcome

      1:08
    • 2. How to approach the class project

      2:35
    • 3. Setting up the environment

      8:47
    • 4. Design own automation framework (Theory)

      12:30
    • 5. Structure (Practical)

      4:22
    • 6. Github (Practical)

      4:38
    • 7. Writing your first test (Practical)

      4:11
    • 8. Using custom library functions (Practical)

      6:58
    • 9. Continous Integration (Guideline)

      1:38
  • --
  • Beginner level
  • Intermediate level
  • Advanced level
  • All levels
  • Beg/Int level
  • Int/Adv level

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.

39

Students

--

Projects

About This Class

Fulfil your dream of becoming a qualified software engineer in Test (SDET).  Learn to design your own automation framework from scratch without any prior automation knowledge. Manual Testers, Developers or anyone who is looking to change their career to get into automation should definitely take a look at this course !

This course introduces the Cypress framework that you could use to design your own automation suite.

Test your code, not your patience.

A complete end-to-end testing experience.

What is covered ?

  • Introduction to Automation
  • Setting up your local environment
  • Automation Framework Concepts 
  • Practical of designing an Automation Test Framework
  • Summary

You will need to have some basic knowledge of programming before you can attend this course. 

Make sure you complete the class project as you go along.

Resources:
Visual Studio Download: https://code.visualstudio.com/download
NPM & Node JS Download: https://nodejs.org/en/download/ (you get both in the same setup)

Meet Your Teacher

Teacher Profile Image

Qambar Raza

Engineer + YouTuber

Teacher

Class Ratings

Expectations Met?
  • Exceeded!
    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.

Your creative journey starts here.

  • Unlimited access to every class
  • Supportive online creative community
  • Learn offline with Skillshare’s app

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.

Transcripts

1. Welcome: A computer can repeat the same instruction in the same way, thousands of times. But if you give that same instruction to a human, that would be a human error. So this course is all about automation, which means you write some automated tests, which are kind of scripts that you write for the computer to. Basically, we, I trade upon and test your system. In this course, we will be learning about automation testing, how you can use the sideways framework to ride your end-to-end tests and create your own testing framework. I've designed this course from the perspective of a manual tester who's trying to get on board with automation. And also people who are changing the carrier from some other field. But they have a know-how about what programming languages look like. And coming into that world as that basically means Software Engineer in Test. So if you're interested, please join me in this journey and I will try to help you get on board with automation. Thank you. 2. How to approach the class project: Hello there. So in this video we will be talking about three things. One is, what is the class project? Second, how to approach the glass project? And third, where to find it. So what is a class project? As you know, this course is about creating an automation framework, uh, your own automation framework based on like premade technologies like Cypress. So that would be the main class project. So if you look at the resources in the main page of this course, you will find an attached PDF called class hyphen project or PDF. Once you downloaded a PDF, you will see some instructions on how to approach it. So that PDF would be divided into three sections. The first section is a theory which we'll be asking you questions about automations, some software test levels, and things that are related to the building off of automation framework. Then practical. That is more about building it. So you will find a boilerplate that would be a ZIP file. Attach this course under the resources, just download a zip file. And in there you will find some files to get you started. That will help you start building your own framework. You, it's more like a fill in the blanks kind of boilerplate. That will help you understand what are the basis of trust framework and what, what do you need to do? So in the videos I'm explaining you in detail like how do you approach that boilerplate? Third thing is the challenge. So once you have understood that theory and the practical, then there's a new challenge for you. So can you solve that? I'll keep that a mystery because that would be included in the file. Okay, so you know, what is the class project, where to find it. But the third thing was how to approach it. To approach a class project, I would suggest just after watching a video, go back to the class project and try to solve the bit that you have understood in the video. Then move on to the next video and then come back to the cost. But you can solve the other bit this way you will grasp the concept that is being explained in the video. And class project will help you solidify that concept. So good luck with that. And if you have any questions, any comments, just let me know. I'll put it inside the comment section. Thank you. 3. Setting up the environment: Hello there. So in this video we will be talking about how do you set up your environment. So if you are a computer programmer, you already know this, that if you want to walk on any programming language, you need programming editor. So the first thing that we will do is download Visual Studio code. That's the most popular editor, right? Nine dye industry. So I would recommend you downloading that. So you can see the link over here in the video. Just go to that link and go to download and our debt and install it on your machine. Second thing, because we are working on JavaScript, I would recommend you to download no JS. So here's the link. And I will be putting these links in the description of the project so that you can just directly downloaded from there. Ok, so once you have installed Node.js and Visual Studio Code, look at the look at my screen costs that is upcoming right now. And in that screencasts, I will be explaining you, how do you set up Cypress? Basically Cyprus framework on your machine and run your first test. Good luck. Thank you for downloading and installing Visual Studio Code and NodeJS. I'm assuming by this point, you have downloaded, installed it, and everything is set up on your machine. So please open your Visual Studio Editor. Once you do that, you will see something similar to what I have got on my screen. And if you look at the options very closely, on the top, it says code, which is the Visual Studio Code editor. And the normal options file added selection view, go run. The most important one that I'm interested in is terminal. So if you click on terminal and click on New Terminal, we'll see something pop down here. So this editor allows you to do everything in the same window. So you don't have to like swipe between like our terminal and an editor. It's like a complete package. So if you've installed a NodeJS correctly, if you type node, sorry, let's say node dash, dash version, you will see something like this on your screen. Previously when I type node, it basically opened and no terminal. So i could potentially try out my JavaScript commands over there. So the equivalent of this ripple, this is just not possible. Ok, so we want to install, download and install Cypress. So to download and install Cyprus, I would first start with the Cyprus website. So if I go over here and search for cypress dot IO, yeah, it gets tells me what Cyprus is. And if I want to install, I can just use this link to install it. But there is also a Getting Started link. This goes into more detail about how do you basically install Cyprus on your machine. So I like following this guy. So it says npm install cyber incidents. I save-dev. Before you even do that, I would recommend you creating a new project. So you're in your home directory right now. I've got a workspace where I do. I keep everything. So I'm gonna go to my workspace and I'm going to create a new folder called, let's call it one. And if I go to one, and this is an empty folder. Here, I'm going to create a new node JS project. So to create a new node JS project, I will type npm, which is node package manager. If you don't have it already installed, just Google it. You'll find it to install it very easily. So, and to verify present same thing, npm, Danish Virgin. So what I'm gonna do is I'm gonna create a new node JS project. So if I type npm init, asked me some questions, what should be the baggage name work? Should we diversion, description and query point desk come on in Git repository. I'm just pressing enter for all of them. Says yes, it has created, as you can see now, it has created a bracket base and vile. Previously there was nothing in this folder. So Alice basically list starkly. Now if I want to open this folder in my editor or typed Cool. Ok. Tilapia in a folder, which is the test one folder within my editor window. I'm just gonna make this bigger screen. And as you can see, it, it has a terminal as well. So I'm going to click on the terminal. So terminal has started. Now the thing that I want to do is install Cerberus. So npm install cypress, save them. So I'm just following the same command that was listed over here. And Kevin soil, Cyprus save-dev. So I've just done that. And now I'm going to press Enter. You will see soon there will be another file that will appear over here, which is called package logged JSON. So once that is created, it will be the package.json file is basically a list of the versions that your project is currently using. The list of the versions for the dependencies that your project is currently using. So you can see by k log Jason and there's another folder called node modules. So these are all your dependencies for the project. So when you do npm install Cyprus, you're basically downloading the gold for Cyprus framework and putting it into the node modules folder. As you can see, there is like Cyprus and dependencies for the Cyprus framework. That's great. So how do you actually use Cyprus? Let's look at the guide again. So that was an installation guide. We have installed correctly. It says you can use npm, Cyprus open command. So Cyprus open command will basically look at it. I want you to see for yourselves so and Px cypress open. So you can see right now we have node modules package log JSON package jason. Usually this command just gives me an error for the first time because some of the things don't exist on my machine. But if it does it for you again, just execute the same command and then you'll see what I'm seeing right now. Which is the Cyprus r1A. Okay? So over here you can see some of the test which is integration tests, by the way, just, just to let you know because I have done this thing multiple times on my machine. It just popped up right there. When I did it the first time, it took some time to download the Cyprus and install it. It just did it from cash right now. So for you it will be unpacked Cyprus hoping there will be an error, then unpicked Cyprus open and then you will be able to do it. You will be able to see the screen. So once you see this screen, you just click on one of the integration tests. For example, I'm going to click on Actions spec. And this will execute the test for us. There you go. So the test is executing. You can see they're all green ticks coming up. Which means I've set up the Cypress on my local machine. I've set up the environment or to execute the Cyprus tests. And I've got no JS NPM, which is not package manager. I've got Cyprus and all the modules. So that's basically it. That's your environment setup. So good luck. 4. Design own automation framework (Theory): Hello again. So in this video, we will be talking about how do you actually design your own automation framework. This is the most important video. So the previous videos, we're just giving you basic information about how do you set up an environment. How do you basically get started with the Fourier Morgan water clause? Because about this one is the core of this course. So if you look at the presentation, so I've prepared some slides so that I can easily explain you that URI first before diving into the implementation. Let's start with that. So the agenda for this course is, first of all, I'm going to go to like what, what is an automation framework? I mean, what was the need for that as well? And how do you create one? I will go to the documentation, like read me some examples to support whites needed when you create an automation framework. Does. The other thing is that you have to consider as well. So this is the main difference between like a junior who's starting a new job and being dictated by their seniors to do certain stuff. So for example, if you ask someone to create on automation, well, they can write code. But can they create the structure by communicating with the people around them? This is the most important things like documentation. If you have created a new framework on new software or any new technology, you need to have documentation, even when we are looking at the Cyprus example in the previous video, we saw that Cyprus had created I'm documentation for the framework to support it. So it's the same thing. Alright, so let's start with what is okay, let, let's get started with what is it? So if you talk about an automation framework, it is basically a set of guidelines or rules. When you're basically creating a standard structure for your team to follow. This will help you basically create a common language between the team. It will help you build common practices. Less. It will save you a lot of time in terms of maintaining and running the framework and adding new tests. So let us take an example of this. So you already have an automation for him which can run on the pipeline, which can execute any kind of test that you basically write in it. There are examples already present. If you tell someone new to just write down under the tests on it, he can just copy paste that previous example and create a new tests within five minutes. But if you ask someone to write a test on blank paper, a complete from scratch without any framework. It will take him like half-a-day RD, which is a lot of time. So for each test, if you are taking a day or two, that's just a lot of cost, then everytime you I write that test in their own way. There's a lack of consistency and it's hard to maintain as well. By having a framework. You're basically eliminating all these other factors and creating a common language between the team, as well as creating examples as well as putting a standard structure in place so that you can write tests very quickly, easily and without any major maintenance cost. So I mean, you can read the definition over here on the slide as well. So let's start with how do you create a good framework? Also, the step one is researched application. So the framework is a companion to your application, the application that you're building. It may be already built. It, it is something that you are starting, but try to understand what it is. I'll give you an example from my work day-to-day job. So we have a TV application. And the TV is slightly different from what you see on the web. So on our website, we have links, right? So you click on a link to go to the next page on TV that has no links. You don't click on things. So think of it like this. You are watching a TV, you have mode. You press up, down, left, right, okay, button on the TV or mode that executes a different kind of function on the TV. So by understanding that the TV framework is different from the ramp, I basically tried to analyze like, what's the difference? Is is there anything that, that is common that I can reuse is anything that I can learn from other technologies or other platforms. I added that result and then I tried to play around with the delivery mode. Like I said, that for like a week or something, just playing around with TV. I basically collaborated with testers who were manually testing the TV devices. I participated in those testing excited as well. This helped me understand what the framework looks like. What a test, current test XR during. And then I looked at a basic research. So the second, which is get an agreement on the technology. So to get an a, I mean, this is more about people. So the framework is not just about creating a code base or creating something which will execute on a pipeline, unique teams agreement. So when you're walking with a bigger team or if you're working with a client, even you need to understand what technologies your client is using. So in my case, I looked at all the teams that I was working with and who would be using this framework. I considered them as my customers. Okay. So I collected feedback. I tried to understand what they are comfortable with, what they are not comfortable with, what languages they are, they prefer. So in my case, when I was building a framework for TV, most of the teens were comfortable with JavaScript. And we'll look at some JavaScript frameworks. And we came up with this guard, this one called puppet here in my case. So the idea was the choice of the framework for the team. They were comfortable with it because that was freedom of like making changes. There were no major restrictions and they could use other technologies with Puppet here as well. So I, I did, I created an RFC and grass for comments. I've gotten agreement on our grasp arguments. You can use any other method. You can just get all the team together and present. Like for example, if you are learning Cyprus, show them what Cyprus is all about. Show them the pros, showed them the cons and compared with industrial standards and then get them to agree on it. So once you have got the agreement, I would say think about the structure, the structure of the framework, how you want to organize the files. This is what I would be demoing it to you in this in a practical video. So basically, the way you organize code really matters. It's the B, you communicate with the person, the next person who would be just pulling your core based from GitHub and start writing the tests that he wants to write on it. So in this case, I mean, I have a one standard method of organizing. It is just a symbol, that easy thing. I tried to name things after what they are. And I personally don't create a file called Miscellaneous all utilities. And because they don't mean anything, they're just a place to put everything else in it. Don't ever create these kind of files. So that's, that's basically the naming of the files, the structure. So I have always keep a library in order to keep the lives in. I have the source folder, I have the desk folder. And one thing important that I do is I make sure that my framework is independent of the application itself. But it is very close in terms of the core base with application. So I try to keep my framework, the application code base, but it's completely independent, which means that you can separate it out into a completely GitHub repository are completely separate project and you're going to run it separately. But ensure that it is still a part of the same codebase. That there was a person walking in my team who, who used to say out of sight, out of mind. And that has happened. I created two frameworks. So one framework basically was inside the code base of the Dhimmi obligation, which gained a lot of popularity. And other framework ritual outside the codebase. It gained no popularity or the stopped. I mean, people stopped using it completely because they didn't understand it. It wasn't something that they were looking at on day-to-day basis. So that's a very important thing that think about the structure. How you structure the framework, how do you keep it? And, and what do you like? I mean, look at other core basis as well. So what, how teams are the team that would be using the framework is more comfortable when I did that as well. And we did like a spike kind of exercise where multiple people are given this option to like create their own framework. And at the end of the day, I basically looked at all the examples and tried to find the commonalities rather than coming up with Mountain Standard, I used the things that were common in all of those frameworks, which I thought would help the teams. And it did help the teams. It's been like 23 years now since this framework was created. And now we have this framework which allows us to test like the TV application before it goes live. So it's a very helpful thing. So structure or one structure is done, that's fine. But what happens if something goes wrong? Imagine there's a test that is failing and it gives you no information at all why it is filling. That would be very annoying and frustrating. You don't want that. What you want from it is some sort of debugging, some sort of reporting mechanism to help your team and yourself. And in order to find out why this is filling, so ensure that does some sort of like logging and debugging happening. Alright? So you have LAN Faltings up under low. If you wanted to create a good framework where he says you obligations and get an agreement from the team. Think about the structure of the project and what to do when something goes wrong. So keep that in mind. This will basically enable you to create a good framework. And this is the theory forward. In the next video, we will discuss how to do it in real life ought in practical. So good luck. 5. Structure (Practical): Hello again. So the number one thing to do for the practical A's create a folder structure. This will define the set of rules at anyone who's using your project or will be working with your project, will follow. So have a look at my screen. This is my Visual Studio Code editor. And right now I have created a folder which is a blank folder. And it's called My First automation framework. Because this isn't completely new folder. There's nothing in it. I'm going to create a new project. If you're only working with the application, you will already have like a packages and Mark, but in my case the non packages on npm init, this will create a package JSON file for me. As you can see on the left, this fall and spot. Okay. And there's interdependencies. As you can see, there is no dependency over here. So I will start by installing Cyprus as my dependencies for this vertex. So npm install Cyprus to save that. So this will download and install dependencies. It will create a node modules folder. And this will soon appear on the left-hand side, as you can see. And it will create a package log file to tell me which versions of Cyprus and everything I'm using. Now as you can see, package.json has updated and in dev dependencies we can see cypress, which is version 6.2. That's the one that I'm using right now. Okay? So at the moment, what we have done is am installed surfaces are dependencies for this project. If you want to create a folder structure, Cyprus automatically allows us to do that. So I can do n px Cyprus open. And it will basically download and setup the folder structure for me. I don't have to worry about like having a stroke structure. Now you can see that it has created a folder called Cyprus. It has executed the cyber says and given me a dashboard to execute the test. I'm not going to look at the Salford for now. So let's have a look at this folder. Now we have got Cyprus nor morals surplus or JSON, package.json. So if you're working with real application, you would have like another folder called source. This is the project source goes into like your main application would be inside it and developed inside the source folder. And Cyprus would be your test folder. So Cyprus is where you're gonna be writing a desk. So in Cyprus, there, as you can see, there are multiple folders over here. So I'll make you a more familiar formula with the naming conventions over here. So number one is fixtures. Fixtures basically means and as you can see, this is just dummy data used for the test. Indignation folder is where you're going to be writing a test. And you can see they are commands like CY dot visit, c, y dot GET. These are Cyprus built-in commands. You can extend this by clicking on support and adding more commands over here. And the plug-ins in sum, everything that surrounds your guest ecosystem. While example, before each, after each, you want to do something before the test runs. After the test runs, everything outside the boundaries of the test. For example, taking snapshots in the past, before the test ran and after it has finish to understand the environment before the test and after DES was clean-up. So this was for debugging purposes. You can do that if you want. If you don't want to use it, you can just delete all these extra folders and just keep the integration that's folder. And that would be the one that you need. So for now, because I have created a whole structure, that's basically it. So I'm going to leave it there. And in the upcoming videos, you will see more information. Thank you. 6. Github (Practical): Pushing it on GitHub. So it, nothing can be more simplified and pushing your code base to our gender door. Github is a very popular version control system. And in this section I will be talking about how do you like add all the files of your project in and create a comment and then push it on my GitHub. And I will also show you how to create and you get about Missouri. But let's get started. So in a previous video, you created a folder structure. Now if I look at and my current folder and if I do git status, it says start a GitHub repository. So the first thing that I need to do is make it a GitHub repository. To do that, I will type will get in it. Now you can see this is a GitHub repository and it shows a file zeta uncorrect. Second thing I like to do is add a.gitignore file. So I'm going to add dot git ignore. And here I'm going to add the folder's got I don't want to see in the passage. So I think and I mean, I know basically when you execute S inside braise, it will create two different folders, screenshots and videos. So if you look at the documentation, will tell you to add them into gitignore as well. So on. Your repository sizes taught like very huge. Okay, so I've added screenshots, videos and Node modules. And some people basically add their environments and sensitive settings over here inside res.json. If you have added that kind of setting, you don't want anybody to know about it. I would highly recommend keeping this file cypress dot JSON into getting hurdle. But in my case, because it's just an empty object, I can ignore those other files. I'm going to create a command git add, God taught basically means add. I would think in the current folder. And you can see that it has created these files. I mean, these are like files that can be committed. It is going to add message. The message is basically initial commit. So on my local GitHub repository, I've done a coming, but I haven't pushed it to master yet. To push it to master, to push it to a versioning control system. Right now, this everything is local to push it on an, on our mortal environment, I would need to go to github. So I'm gonna go to GitHub for slash. I like to go to my profile page. Here. You have the option to click new, create one new repository. And I'm going to use the name of the folder, which is my pulse automation framework. And I'm going to click on Create repository. So this has created a repository for me. Now as you can see, there is a command which says git remote add origin. So this will set up a path to where I want to push all these files. So previously I did a local commit. I am setting up the part which is this part. I want to push my repository, get up. So I've added my origin over here. Now the second finger I need to do is go back again over here and copy the command git push, gosh, you origin. And because my branch damage Monster, I'm gonna just use must. So as you can see that it has pushed all the files. Now if I refresh my repository, the files will be there. Thank you. 7. Writing your first test (Practical): Writing your post-test. So let's get started with our codebase again. So we know that over here we have got a folder called Cyprus and the right tests in the integration Florida. But at the moment you can see there are so many other test that are already written. So they are all example does. But I want to test my own application. I don't want to use these examples right now. So what I can do is I can click on the folder, reveal in Finder and just deleted or turban. So I don't have the examples folder anymore. I don't need the fixed test folder. I'm gonna delete that. Can go in and delete the plugins folder because I don't need that anymore. I'm gonna believe does support folder as well. And I don't need it. And this point of time. And in here I'm going to create a new file called My Plus has gotten spike dot Kayser. Guess. So you write your first test. There's an example given on Cyprus website. I'm just going to copy the example from getting started writing off less tes. And here we can just copy this example. Image filled me this. And I'm going to try to execute the test. Now in order to execute the tests, I've got two options. One option is I can do MAX cypress open, which will open ground cypress guys food run up. And it has affected my tests, which is this test. And as you can see that this has paused, solid green. Another melted through, and the same task is go inside. If I could do some file. As you can see right down inside the scripts, that many, many look at scripts come on. It says Error Node as specified. So if I run NPM task, it will give me the same message eco. Notice specified exit one. I'm gonna change that to Cyprus, run our render the same darn again and VM commands. The test has passed. So that's how you write your first tests in Cyprus. And you can see it has a describe, it has an ID, expect an equal. So every test has an assertion, and we test has a definition. So this is the definition of the test. And we test has some information about what the task is all about. So this is telling you this task doesn't do much. And the described basically tells you all the task. Pretend this test suite. What, what are they about? So I can show you this example, maybe in some other course like how you can write your own test in Cypress. But for now, I think this is what I wanted to show you. Thank you. 8. Using custom library functions (Practical): Sometimes you need to do a bit of extra work before you get to the good part of the test. So for example, if you're testing, if your application form works. So if you have like a registration form or an extra Customer Detail formula, do you have a question from the customer to fill in the information? But you require the customer to login beforehand and login is not a part of it as you could write a library. And you can call that function in multiple tests and do that same kind of login and with time. So here I'm going to use the login example. But instead of calling the function Login, I'm gonna just say it's my add function. So just so that we don't have to basically use any servers at the moment because that would increase the complexity. So if you look at my editor, think of it like this. Read my application has given me. So the actual value that I got back from my actual application function was 50. But bring off 50 ads will login visited. And I want to calculate using my library function what would be the result of the two numbers, num1 and num2. Where num one is basically my number 20 and n12 is basically my number curvy. But at the moment the edge function doesn't exist yet saying that this would be a part of our library. So exhibits that will be our library function. Let's call this library my max library. So I'm gonna create my Matt's library variable RAM, going to acquire my mats library. But I'm going to create this library. One day of creep back inside the lib folder. For my mass library. Dot num one are matching but less library doc and will be the function which will take two numbers and give us back and the sun. Okay, so over here, as I said, I would create 1.2x or via currently in the integration folder, one director back a Cypress. So I'm gonna create a new folder garden lib. Inside here. I'm going to create a library file name called my mats library, ab.js. And here I'm going to create a library function. So in NodeJS hue basically export that function. So outs a exports dot AD is equal to and a function which returns the reserve of now one plus number two. But I need to pay the arguments num one and number two. So brands will export a function which is add function. Now let us try to see, look at the actual integration tests. So my mass library will, we will get the function over here, and they're calling it using my mass library dot add. Let's give it a go. At the moment, I'm not using the actual unexpected. So let's say my actual Is this an expert grid is that's a complete task. And I'm not asking my library. I know I'm using my library as an aid for my test. That is why it is inside the expecting, not the actual. So that's the main difference. If I was calling a function from my application, it will be, I will be calling it in the actual. Okay, let, let's look at what's, what has gone wrong over here. So it says that there has been invalid parenthesis. So the syntax for this is not correct. So I'm just going to fix the syntax now. So export dot f is equal to it takes two numbers and response by the two numbers added. Let's have a quick look at the syntax. So NodeJS, Modules, o, X4 star function m. And this is a cell XOR function. Tom spoke at export storm. Function name. Oh, so I'm not using the right return Molly. So the return value is represented by equal and greater than signs. So let's try to run this. Again. This is a good example, like if you get stuck, if you have any syntax issue, you can just do a quick google and find out what score has gone wrong with it. And as you can see, not the cast is passing. And my library function is running T. So if you want to verify that, if this was like failing on because we always do red green refactor. So if I had a completely different value like file gamma minus1 and an actual. Again, see men and men rerun the test. We will basically see that the actual was minus1 and regard 50. So that proves that the library function is walking. And man, we compare 50 by 50 x equal baffled test is passing. Thank you. 9. Continous Integration (Guideline): Okay, so you have learned about how to create a framework for how to design the folder structure, how to write your tests, how to execute as how to create your own library functions. And the last but not least, I would suggest running these tests on the continuous integration environment. And the reason I was using these command, which is NPM test over here, is so that you can easily hold this up with your continuous integration. So wherever you are running the script, for example, in Jenkins, just put NPM test over there, and that will execute the test in Jenkins. If you want to execute any gold pipeline, you can just put it in your spec file for the Docker, where it will run the commands and it unless Colby and it will basically execute the test. Make sure when you are executing the test, your server is running. Cyprus documentation says this way clearly over here. So you go to the documentation in here, there's a section called Guides, and it talks about continuous integration. You can get more information about setting up the CI as well. The one thing that I want you to note is this feed on module. So when you start your server using the weight on modal, you can wait for the application to get started before you can run the NPM desk amount. So NPM test is equivalent to cyberspace warrior. Thus basically it, I hope you enjoyed the course. Thank you.