 Welcome everyone to the Praveen's talk today. We are glad to have Praveen today in our talk. Welcome everyone. It would be great to see where all of you are joining from. Maybe just tell me on chat, all the different places in the world that you guys are joining from. It would be great to see that. While you do that, let me just quickly introduce myself and tell you a little bit about what I'm going to be talking about. So I've been in the testing space from a product perspective for the last five years as part of BrowserStack. I've launched Automate Mobile, so Selenium testing on real mobile devices. I did a bunch of work around scaling and also currently manage our infrastructure platform which provides all the browsers and devices for all of our customers around the world who run millions of tests a day. And as part of my responsibilities, I also work with very closely with the open source team at BrowserStack. So we contribute very significantly to Selenium and we also acquired Nightwatch about a year and a half ago to just accelerate development and contribute back to the community. So I work very closely with David Burns, with Pooja I think who's going to be doing a panel discussion or a fireside chat later on today. So yeah, I'm really excited to talk to you all about Selenium and Nightwatch basically, right? And some of the cool new features that we've been working on with Nightwatch, which is a JavaScript-based end-to-end testing framework. So you can use Nightwatch for all of your end-to-end tests. It runs on Node and I'm just going to quickly go through some of the highlights of the features that we've built or are in the process of building out. And yeah, with that, let's get into it. Okay, a bunch of people, somebody's joining from Germany, Tushar's from Germany, Anurag, Jamen, Pramod are joining from India. Great to meet and see all of you. All right, let's get started. So I think the main theme of my talk today is really around debugging tests, right? I think it's one of the big challenges in QA is when a test has failed, how do you quickly understand why it's failed, right? Is it really a bug? Is it some issue with your test suite? Is it some issue with the app that is being tested? We don't know, right? And we end up sort of chasing around sometimes these bugs which are false positives and end up wasting a lot of time. So how do we simplify this debugging process? How do you make it as easy as possible for QA engineers or developers to quickly identify the root cause of a bug? So I've sort of broken it down into three main areas, right? One is just to understand you run a test or run a set of tests, your test suite. You want to just quickly understand what the status of your tests are. Second is how do you examine failed tests, right? What is the kind of information that a developer or a QA engineer might need in order to debug a failed test? And the third is let's say you realize that something has gone wrong or you're not quite sure and you want to try and reproduce the issue. How can you do that, right? And how do we simplify that process, right? And I'm going to talk about this in the context of Nightwatch, right? So I believe strongly that Selenium is the best sort of automation tool out there and Nightwatch with Selenium is really magic, right? I think all the releases that we've had since Nightwatch version two earlier this year, we've typically been releasing every two to three weeks a bunch of new features and improvements. And then we've got a lot more coming in on the pipeline and I think this is going to be just a match made in heaven. So let's talk about debugging failed tests and in the context of the same three points, how do we accomplish this with Nightwatch and Selenium, right? So the first one is really around understanding the status of tests, right? How do I understand the status? And we've built recently we launched with Nightwatch 2.0, sorry 2.2, a inbuilt HTML reporter, which is quite basic right now, but we're working on adding a bunch of features to it over the next few weeks and months. The third one, second one is how do we examine failed tests? I'll talk a little bit about some of the integrations we've made with Selenium's CDP commands. And hopefully in the future, we'll also be working on some of the Selenium-by-day integrations with Nightwatch. And the last one is something that's not yet released, but we'll be launching probably in the next week is our pause and debug functionality, which I'm super excited to show to you guys, should all of you here. All right, let's keep going. All right, so the first one is our sort of Nightwatch HTML reporter. So what we've launched recently is a very basic HTML reporter, but he liked very fast, which helps you just look at aggregated test results, let you look at the durations of each test, let you look at all the assertions that you've made in your Nightwatch test suite. And, you know, understand what's worked or what's passed and what's failed. And we're also working on a trace viewer for you to get more debugging information. And, you know, I think there are certain features that we're working on in the pipeline, things like attaching screenshots, you know, when you have a failure, you can basically configure Nightwatch to capture screenshots when there's a failed assertion. So attaching those screenshots automatically into your HTML reports video at some point in the future is also something that we're looking to do. Okay, let's go to the next slide. So, okay, the next one is around Selenium and Nightwatch and Selenium CDP commands, right? So this is the second step, right? So once you run your HTML reports, or once you run a test suite, I'm sorry, and you've understood, okay, what are the tests that have failed, you want to go in and double click into those failed tests and you want to try and understand, hey, what's going on, right? Why did these tests fail? And we have built some integrations with Selenium CDP, basically the Chrome debugging protocol and, you know, helped sort of expose some of these logs, you know, to you as a user, right? So you can extract all this information right from your Nightwatch tests in a very, very simple way. So here are some examples. So this is a code sample for capturing console logs, right? So I basically just have to turn on this, or call this function, which is browser, capture browser console logs. And I can basically, I'm just sort of simulating a console message here, which is console loader here, and you can see that it's actually, you know, captured that statement over here in my console logs, right? So obviously, you know, you can insert whatever kind of debugging information you want in your console logs during your tests or in your test scripts, and then you'll have a clear log in your browser console logs that you can access very, very easily through Nightwatch. The second piece is network requests, right? A lot of times, you know, a network call might fail, which might cause your request to fail, or which might cause your assertion to fail. It might be a firewall issue, it might be an internet connectivity issue. You don't know, right? Unavailability of that particular resource. So, you know, Nightwatch now has an integration, very simple integration again to capture your network requests. And, you know, this is just an example. I've basically, I'm going to Google.com and I'm just capturing, I'm showing you an example of one particular network call where I'm trying to get the Fabric on. And it sort of shells you the request headers and the responses. So, again, you know, this is just a very, very simple proof of concept example, but it just tells you or shows you how you can sort of get all of this information during your tests, you know, with your test scripts and embed them. You know, right into your output so that, you know, when a test fails, you can go back in and look at, hey, did any network calls fail? And you have a very quick, you can get a very quick understanding of why your test failed. And the last one is browser exceptions. So, you know, JavaScript exceptions that, what JavaScript failures that can happen in your website. Again, you know, we've got very simple way to capture this and log these events into your console logs and log them to wherever you want actually basically. So, you know, in this case, you know, I've sort of, I'm capturing with this function capture browser events, browser exceptions. And, you know, you can, you can sort of see the, the output here, right. And this again, I'm just simulating, simulating an error here but basically this tells you or shows you how you could use something like capture, capturing browser exceptions to help you debug more effectively and more quickly. All right, great. Trisha, just a quick time check, how much time do I have? It's 4.10. So, you have another 10 minutes. 10 minutes, okay, great. Awesome. All right, let's keep going. This is one that I'm really excited about which is reproducing an issue. So, this is a feature which is very, very quickly, very soon going to be released on Nightwatch. We are basically allowing or providing users with a way to pause the test and also debug while the test suite is running, right. So, I'm just going to play this video and I'll walk everyone through this example. Oops, excuse me. Yeah, can you guys see my screen? Yes, yes, probably. Okay, great. So, over here you'll notice in this code sample I've put in dot pause over here, right. So, now as I step through this, I'm running this test which is going to duck-duck-go, right, and it's paused, right. So, now it's just waiting, right, after that pause command has been passed, it's waiting. So, I can interact now with the browser, right. I could even click somewhere, do an inspect element, debug, look at what's going on in the browser, look at the state. So, imagine a test has failed, you could rerun that specific test, right, and insert the pause command right before where you think the failure happened to get a clear sense of what the state of the application is, right, or the state of your web app is when that test was running, right, right before the test failed. And you could sort of look at all the different properties of that web app using Chrome DevTools or any DevTool depending on the browser that you're using, right. And I can just keep sort of pressing space to continue with the steps, right, so it just keeps going, so it's just one by one and just keeps going, right. So, that's pause. Now, I am switching this to debug, and I'm going to rerun this now. Same thing, right, so I am doing this. Now what I can do, the advantage with debug is that I can actually start passing in commands, night watch commands, right, into my script. Real time, right, while I'm in debug mode. So, if you see this example, now I'm actually doing browser.navigate to a different URL, right, in this case, I'm going to be going to Google. And when I do that, I'm actually interacting now real time with the browser, and it's going to Google through night watch, right. And then now I can do a get the value of the title of the browser. And I could potentially set, you know, so in this case I'm setting a variable or a constant to that value. And I am now going to do assertion. And I can actually see the state of that assertion right and I'm again all of this is not in my original test suite right I'm actually adding this while I'm in debug mode. Right. And this is, I think, an amazing feature because it will really help you. Once you've identified a failed test three to step through one by one. What the, you know, what why you think that error occurred and you can literally like play around with your test suite right while it is running while you're in debug mode. So I think this is a really, really powerful feature right to be able to interact with your web app. Pass in commands through night watch. Pass in assertions new assertions that you want to make. And yeah just step through your test suite right so makes you helps you accurately or easily reproduce an issue right when you know what's going on you could do a pause you can understand the state of your application. And you could add in assertions add in more commands to try and understand what's going on. I think the yeah this is the second last slide problems taken so a bunch of new things that are coming. Like I said pause and debug is coming soon within the next week. We're also working on a VS code extension, which will allow you to set up night watch run night watch right through VS code so you never have to leave your ID. Right and we will be working on more and more ID sort of extensions over the next few months. You can even do things like inserting breakpoints or using things like pause and debug right within right through VS code right so you don't have to ever leave the context of of your of your code. We're working on actionable error messages inspired by rust and I love the way they sort of help you debug through their really really verbose or really really detailed error messages with clear next steps on what to do, or where to look in order to fix that error. I spoke about some of the new features we're going to be adding in our HTML reporter. We're going to add support for unit testing. And we're also going to be working on a bunch of performance improvements to help you run massive number of tests and parallel more effectively also improve sort of your startup times for your individual tests to. And yeah, this is the night watch and the open source team you can see David burns there on the left I think yeah and the stress of the team Pooja and child bunch of folks here recently the Brashtike office so just a shout out to them they're the ones doing all the hard work and shipping all of these features. And yeah I'm really excited to bring all of these to you. So just give us a shout out night watch JS dot org. We have a very active discord community. We're pretty active on Twitter so give us a shout out if you have any questions. Just reach out to us and we'd be happy to sort of help you get started with night watch so that's it. Any questions I think we have a couple of minutes for questions. Okay integration with other HTML reporters. We do have integrations integrated with almost every other popular HTML reporter out there so you know if you don't want to use our own HTML reporter you can use any other HTML reporter that's out there. The next question is can you talk about the stability of this tool. That's a very broad question. I think I think so you know like I said. Night watch you know is a tool that's been around you know for six seven years it's really stable huge number of usage in terms of users now npm downloads GitHub stars. We're constantly working on improvements you know I think Selenium for itself has made a lot of improvements when it comes to stability and also adding a lot of rich functionality around debugging. And you know our goal with night watch is to just make it as as is the best framework out there you know for testing right. If you have any specific feedback around our stability. Please do let us know I'm like I said you know we're available on Twitter. Or just check out check us out on our website night watch jazz org. You can join a discord discord community from there and give us any feedback happy to sort of take that. If you guys have any more questions we can use social media and if you could help like your social media handle and like how they can reach it out to you after the session. Give me on Twitter it's up at Praveen one nine eight one. Okay. Any other way if you want people to reach out to you. Praveen at browse stack.com email works. Thank you thanks for sharing that thanks for giving your time. Thank you. Thank you. And thank you everyone for attending. Appreciate it.