C# Automation Testing with Karthik K.K
8 Dec 2025 · 29 min
Karthik K.K, who has 12+ years in automation testing, explains why C# stays relevant in enterprise work. He covers Microsoft's tooling, Selenium 4's Chrome DevTools integration, API testing with RestSharp, and how WinAppDriver replaced Coded UI.
Questions this episode answers
March 22, 2020.
Over 12 years.
Over 25 courses.
December 2019.
Visual Studio 2019 (Coded UI was deprecated/removed after VS2019).
Chapters
Welcome to the Test Guild Automation Podcast where we all get together to learn more about automation and software testing with your host, Joe Calantonio.
Hey, it's Joe. And welcome to another episode of the Test Guild Automation Podcast. Today we'll be talking with Karthik KK all about C automation, testing and automation and a whole bunch of other things. Karthik has over 12 years of experience consulting, blogging and researching various testing tools and techniques. He's the founder of Execute Automation and He's a prolific YouTuber and cost creator who's authored over 25 Udemy courses on various automation testing tools and techniques. He really knows his stuff. He's also known as a C Coding ninja. So if you're into C Sharp or animation in general, you don't want to miss this episode. Check it out.
The Test Guild Automation Podcast is sponsored by the fantastic folks at Sauce Labs. Their cloud based test platform helps ensure your favorite mobile apps and websites work flawlessly on every browser, operating system and device. Get a free trial. Visit testguild.com sourcelabs and click on the exclusive sponsor section to try it for free for 14 days. Check it out.
Hey Karthik, welcome to the Guild.
Thank you so much Joe. And thank you very much for including me for your great podcast. I've heard about it a lot and it's pretty interesting and very exciting to talk about the C Automation to everybody.
Very cool. Yes, you've been on my wishlist for a while so I'm so glad I was finally able to get you on the show. But before we get into it, could you just tell us a little bit more about yourself?
Oh yeah, I can quickly tell about what I'm doing. Currently I'm in the automation testing field like as you tell 12 years. And yeah, it's getting more than that and I've been working in a lot of different automation testing tools starting the era of Windrunner and then it moved all the way to QTP and then I found this C Sharp based automation testing tools like Microsoft's coded UI just pretty cool because that was on September 20th, 2009 and Microsoft released with a pretty long list of new wish list of testing tool which never had before was very good. A lot of people really had no idea of what this tool is all about and we started working on it and it was kind of great and Selenium started to support C by then in the alpha release and it came into the picture and again yes, it's all the collaboration by then and I started working with these tools and later half was completely different. I couldn't see C Sharp evolving a lot. Like a lot of people are folks going towards Selenium's java world and JavaScript world these days. But still C remains pretty good.
In terms of the automation testing language binding.
I'm too much focused on the automation testing world with C in Java but C is always my platform or language of choice. So yeah, that's what I've been doing. And in terms of the courses I have created many different courses in Udemy and YouTube mostly towards the language binding of C Sharp and Java. Yeah, so I have some framework development courses and I have almost most of the recent courses which is released I have. Or towards the latest platforms like Puppeteer, Cypress and stuff.
Yeah, very cool. Yes. I'd like to dive into a whole bunch of things that you just brought up there. I guess the first one is why C? Is it just your language of choice or I believe you were on a webinar recently with test projects saying you see it actually growing as one of the trends in 2020.
Yeah, so C is.
One of my language of choice and I've keep working on C in many different companies I've worked for but it seems like it's not seems like. But I've seen that the Fortune finder companies that I have worked I somehow could able to work on. Some of the companies are actually of C Workshop or Microsoft Workshop. So they keep using C as the language even though they can't get out of it. But still they could able to have a workaround to use some JavaScript based languages for their UI to build. But still C Sharp is going to be the underlying language for the server side at least. So C Sharp if they start going to use then probably they would say the company prefers to the automation testers to use C as the language for automation testing as well because it goes pretty well with the automation and with their DevOps side by side. And if you see the Azure DevOps or Team Foundation Server before or any other Microsoft's own test manager stuff, they all go in collaboration with C language binding pretty well.
A couple of companies for example I work for is like sitecore, they are pretty much into the C world and they're completely Microsoft and any of the companies I don't want to name them but yeah those are all completely C Sharp Word but some of the companies like let's say the small startup companies who don't really want to pay for the paid softwares, they would probably go to Java or JavaScript based language bindings. But still they are the only people who probably don't want to go with C Sharp. But yes, for the bigger companies who really rely on enterprise level upgrades and stuff, they probably in any sense will go to Microsoft for their services and they still prefer C as the language of choice.
Cool. So when I started my career I used to do tech support for Microsoft Visual Studio. I've always liked Visual Studio but I've never seen as that popular lately. Has that been a change? I think Microsoft maybe the past five, six years really has started to embrace open source. Has have they come out with an open source IDE that more people are using and that's why it's helping revive almost C being used.
Oh yeah, you're pretty correct. Actually Microsoft had something called as Visual Studio Community Edition before which was Community by nature, which didn't really had any lot of updates and features in it. But then Microsoft announced that the Community Edition is going to be pretty much equivalent to the Professional edition of Visual Studio. So if you buy a Visual Studio Professional Edition it's going to be pretty much exactly like the Community Edition. But the only thing or the catch Microsoft says that is if you use the Community Edition you should not use it for the enterprise building or something that you're going to be licensing for. So yeah, it's a Community Edition that we have to maintain that. That's one thing that's about Visual Studio the whole blown platform for Windows. But yeah, they also have a Mac. But if we're going to go build something very small pretty quickly then Visual Studio code, which is pretty awesome as well and that's something we can use in any operating system like Windows, Mac and Linux. Even for web. Now they have Visual Studio online which you can just build on the go, even in your mobile phone.
Nice. Yeah, I don't think enough people are aware of it and it's a really nice ide. A lot of your demos you're using Visual. I believe it's Visual Studio but it seems like a very intuitive IDE compared to Eclipse or something like that.
Yeah, it's pretty interesting. And the plugins they have like intellicode is one of the interesting plugin they have in Visual Studio which is something which suggests you which method that you should be using based on the context that you're writing the code. So that's an AI based tool. Again it's free from Microsoft. They have just integrated even in Selenium. Let's say if I'm going to use something like driver. Then it suggests you okay, for this coding contest you're going to use the find element by. So if you use the find element then if you open the bracket then it'll suggest you. You're going to use the by for that. So then if you hit by dot then it will like. Of course there is no other way that Microsoft can really tell you you're going to use XPath or ID. But yeah, it's, it's pretty good.
What's the name of that plugin?
It's intellicode of Visual Studio.
I know you did mention Coded UI and I believe they killed Coded UI off a few years ago. So if someone is doing automation and they are using C, do you recommend.
That they use Selenium Coded ui? Yes, it's a thing I've passed. It's not thing I've passed yet because they're going to kill it in 2019 Visual Studio Edition. So after Visual Studio 2019 they're going to completely rip it off and they're going to completely support win app driver.
UI's main power was supporting not just the web automation. Initially while they released Code ui it was mainly towards the Windows Presentation Foundation UI and then they supported the win 32 APIs and even for the FoxPro app that we were developing by then, which was not even supported by Microsoft, was supported by Microsoft's Code UI testing tool to recognize the ui. QTP was not recognizing the UI by then, but yeah, Visual Studio Code UI was recognizing it. So that was the whole idea of Microsoft to support the Windows based application initially. But the later half of the Code UI was the support of Selenium based tools like the. So they also added the support for Selenium in the core UI itself. So if you add that plugin then you get the same Selenium experience within Code UI to support the web browsers and cross browser support and all those stuff. But now they have completely reduced it because we know that WPF is dead and WinMap is completely modernizing right now with many different.
Experiences like Microsoft itself is not building any new Windows app, something they were building earlier. So they are killing it off for the favor of WinApp Driver. Again, WinApp Driver is the same project of Appium and they're just supporting the WIN app driver to build it so that it talks pretty much exactly like Selenium. So they use the same JSON wire protocol to run or identify the element to perform any operation in there. So yeah, that's so Core ui. For the long story short, the core UI is Now completely killed in the favor of WinApp driver. And selenium is going to be there forever and again it's evolving a lot and this year I think it's going to be even more better because it has support for the devtool protocol. So yeah, it's pretty good.
Now what does the dev tool protocol give you?
So yeah, so basically with selenium 4 they introduced this Chrome devtool support which is something we can directly integrate. I mean we can get the Chrome's own features like XPath or XHR request and the network tab that we can see in the Chrome devtools that we can get everything programmatically with selenium 4 with the chrome dev tool, which is pretty good. That was something which was only available in Cypress initially like last year and today even Puppeteer has it. But that's something available in Selenium as well, which is pretty cool because we don't really have to hunt towards these JavaScript based tool anymore. We can go with Selenium with C language binding or Java language binding or any language binding of your choice because Selenium support them all and we can use that with selenium 4 is really, really good.
Yeah, I've actually saw a lot of people going to Cypress just for the ability to get the network timings and such. So this is an awesome new feature. I think that's really going to help the community.
Yep. And that too with the power of C ide, as you mentioned before, we can get almost. I mean it's there in Java as well. There's no harm in that. But with C we cannot just restrict ourselves on that. We can see the same behavior that we get in Java. We get the same in C as well. So that's why. Yeah, it's pretty good.
So are there any myths or things that people don't know about C that you think if they knew about it'd be more popular or you think more people would definitely want to get their hands on it?
I think C's much greater benefit is the language itself. No harm with Java guys in here, but the reality is C's own extension method, C Sharp on the lambda expressions and C Sharp own enumerations. Those are pretty interesting. And even the lambda expression is right now introduced in Java just recently like four or five are released before and there is no such extension methods which exist in C which is, I mean in Java which C Sharp has it. So those are some of the most important things I would say, which is there adding a value for the C itself compared to the Java language. There are so many different new updates which keep coming in C. The reason being C is one language which I could see that.
It'S built pretty much inspired by Java. But now it is more than Java in terms of the whole way that we can use it itself. For example, the extension methods as I said in C in Java if we want to add any send keys method for our existing Selenium based method, then we cannot just go directly and add it like a method and use it with our Find elements interface. Whereas we can do the same with Java using extension methods. So with extension methods you can add an existing method of the compiled DLL file with just an extension with our own custom method so that we can use with the same find element driver extension itself. So those are something which adds on the top of the existing code that we have and we can use it. So if it doesn't make really sense, like let's say we. Let's say the Toyota is the car which is built by by the manufacturing company which has been released. It's like Java or any other language. And if they're going to use in Java then Java has to completely re scrap the Toyota engine completely and they have to build from the ground up. But whereas in Java, in C they can just create an extension and they can add on the top of it and they can just mod the whole vehicle in such a way that you can use it. So that's very easy. In C like couple of codes you can create your own method and extend it. Whereas in Java it is highly impossible because there is no extension methods available. That's one example. And there are other examples like lambda expressions, enumerations and even the usage of language. With the. NET Core the power of Java itself was the cross platform support. But now with C with NET Core it's exactly the same thing. And With Net Core 3.1 released in December 2019, it has even more feature. Almost all the plugins which is available, even Selenium can run on. NET Core with.
Cross platform support. Just pretty good.
I guess. One thing that comes up a lot of times there's a popular plugin in Java so people use it for API testing. For example, if you're using C Sharp and using Selenium, but you also need to do API testing, are there any add ins or not add ins, any libraries you can pull in to help you with that type of testing as well?
Yes. So Rest Sharp like rest assured they have something called as Rest Sharp which is very easier to Use compared to Rest Assured itself. The reason being even in Rest Assured if you use that tool, because I have the courses for both of them like Rest Assured and Rest Sharp. So the difference is very, very easier to understand if we look at it. So for Rest Assured, if we're going to use something like as the POCO or they call us pojo classes, which is plain old Java object class. So if you want to convert that to pojo classes, then we have to externally cast that.
With the generics and then we're going to get the value out from it and then we create a model for that. We need to create a separate model class and then we need to put that in there and then use it. That's how in Rest Assured it works. Whereas in Rest Sharp the same thing, same concept they have, you're going to create a generic class to get the responses. And instead of putting that in the POCO class, because in C Sharp word they call it as plain older class object instead of plain old Java object. Right. So in POCO class we're going to put that we can create an anonymous class and then we can do that. So we don't even have to create something like a separate class model or something like that in C Sharp Rest Sharp language, I mean tool, sorry. So those things can be eventually come within the.
Rest Sharp tool itself by default. So you don't really have to create a separate class kind of thing. And yeah, Rest Sharp is pretty interesting as well.
Awesome. So another tool people tend to use a lot of is Jenkins and there's a lot of documentation how to integrate Java based frameworks with Jenkins and a CI CD pipeline. Is it the same thing with C Sharp? It's just running command line from Jenkins to call your C framework or would you recommend using something else for CI cd?
I think Jenkins is great tool. I mean a lot of companies, even though they are using Microsoft own platforms, they don't really use Azure DevOps until recently. While Azure DevOps service 2020 released, 2019 released and now it's 2020.
People are using Jenkins and they were also using the Octopus for the deployment. A lot of people use TeamCity.
There is a mixture like how the organization has been built and how they are comfortable with. But Jenkins has exactly the same thing because Microsoft knows.
How the community is working and how the Java world is keeping up their pace with the Maven repositories. Because the power of Java is the Maven and gradle like how they import the libraries from online, build it on the fly with Jenkins and deploy the application or run the test. That's exactly available with C as well because they have NuGet packages. You just specify the NuGet command and it restores the package. There are a lot of plugins available in Jenkins itself that it restores the NuGet packages on the fly, build it and deploy it pretty much like how it does in Java. So Jenkins is no different with that and I have cores on that as well, separately for C Sharp deployment. It's pretty straightforward and simple. For your question, yes, Jenkins can be used, but the most prevalent these days is Azure DevOps. It's doing very good and I have released many videos and courses on that as well. It's very, very popular.
Talk about popular courses and videos, which are most popular course right now are new to me.
If you ask mine, then I would say the most popular is the first course I released still, which is the Automation Framework development with Selenium C. That's still the most popular course. I could see a lot of people are enrolling and those courses are now part of udemy of Udemy for Business. So if your organization is part of Udemy for Business, then you can get the course for free, like that. That's very, very popular. And then the Automation Framework development with Java is also famous.
And I guess Cypress was the third one. So people like the mixture of everything.
Yeah, yeah. So I'm sure people can ask you questions, you being the instructor. Is there any common questions you get asked about frameworks?
You've seen a pattern, the same pattern. It's everywhere. People, people ask the same question, like keyword driven testing or hybrid testing, what is the difference? They ask this question and they ask like they mix their question along with the BDD scenarios. They say, do I need to use the BDD framework for Selenium? How does it work? So BDD is not a framework, basically BDD is a standard. It's the way how we use it. So yeah, that's the other question that I get. And mostly I'll say like, if we build a framework, how hard it is to maintain that code and stuff. So there isn't. The whole idea of building the framework itself is maintainability. We don't really have to maintain the framework, of course, but we should build the framework in such a way that it should be maintainable. Yeah. So it's pretty much common for all the codes that we built. Yeah. So those are. I mean, I get these questions pretty much in all the courses and because in Cypress I don't really have any framework as such. So they ask like why there is no framework in Cypress. Because Cypress by itself is a framework. They have built this tool in such a way that it is self maintainable. So we don't really have to have any framework for that. And similarly the Puppeteer course at least has no framework. But my friend Michael, yeah he, he has built a tool called Concept js just pretty interesting because it's a framework of frameworks, I guess. So it, it has support for the Cyprus, the Puppeteer, Playwright Test, Cafe, webdriver, IO Appium and there is one more tool. Yeah, like six tools. It supports everything within it. So that's the framework. So you can use that for building it. Yeah, so that's some of the popular questions that I keep getting is the same pattern.
So what are your thoughts on bdd? Do you recommend it?
Oh, I highly recommend it. So I've been using this BDD for almost long time now and BDD is one of my favorite. I mean there are so many myths and confusion going on. Like BD is highly complex to maintain while the project grows bigger. But the, the, the flip side is it is highly maintainable as well. Like how we build it because in, in this, in New Zealand we built a framework for one of the company where there were people who are not into bdd. They like, they think that BDD is not that great. But we build an education model for the guys here initially like what BDD is and how to maintain it. And then we started building the BDD framework.
Such a way that they first know how to write the scenarios and they know how to, they need to know what this scenario is doing. And we should not duplicate the step definitions.
And if you write any step, you need to verify your existing steps to see if that's not colliding with other steps that you're going to be writing, like duplicate effort and all those stuff. So there are many tools for that. If you just use cucumber directly you get some confusion. Some people write I log into application. Some people write I will log into the application. And some people write I am going to log into application. So those three steps are completely different and that brings confusion among the step definitions writing the same code again and again. So there are tools like Heap Test, which is acquired by SmartBeer recently like last year. So that tool has support for automatically showing you that this step is already implemented. You don't really have to implement it like that. So that way we can maintain the BDD scenarios more in a much better fashion. So that tool is not just specific to specflow or Cucumber. It is also for jbehave or any other languages of your choice and it maintains BDD much better. So bdd, yeah it's highly recommended for bigger project I have seen. All the bigger companies I have worked with are using bdd.
I also noticed in this question you're using Playwright and I think it's fairly new. It's been out for maybe two months or so. Any thoughts on Playwright? When would you use it? Why would you use it? Do you recommend it?
Oh, Playwright is really good because it's built by the same team of Puppeteer the same Puppeteer team who moved to Microsoft right now, a bunch of guys and they started building they just renamed the project basically to Playwright and It's still the JavaScript language. Same thing. Whatever repos that you see the Playwright Puppeteer recent edition is 2 so playwright001.1.1 is actually puppeteers version 2 so they just renamed and yeah it's pretty interesting because this is the only tool I have seen right now in the JavaScript world which supports Safari, which is WebKit and it supports Edge Chrome which is Microsoft's and then Chrome browser from Google and also it supports Firefox natively so all those browsers are supported which is something Cypress recently released the cross browser platform support but still it runs on their own frame that's the problem, they call it a Cypress Dashboard But Puppeteer or Playwright they run on the native browsers and it works pretty well and Playwright I recommend the reason being that's going to be the new new I mean people are going to use that anyways and Puppeteer I guess it's going to be there but the feature may be going to get in second half once the Playwright gets the first feature maybe Puppeteer get it later. So yeah, Puppeteer is really good in terms of using it within the application automation it has bunch of.
Ways to identify the element. Not like Selenium because Selenium has only weight like find by XPath ID CSS link text, something like that. Whereas using Puppeteer we can directly do as if like we are doing from the Google Chrome's dev tools like the console that how we query the element we can use all the different way that we can do same in Puppeteer itself or Playwright itself they are pretty much same.
Karthik there's always a new framework coming out, people are always creating their own, there's always something new. So when people ask you what tools should I use? What's your standard answer for what framework or what tool they should be using for the automation efforts.
I would say the answer is going to be first one is based on the team like what they're comfortable with. If the team is comfortable with existing Selenium, if they're using it, just live with that and just keep upgrading that because don't reinvent the wheel by choosing another tool and do the same stuff that you have did for Selenium and going with it. And if your company is going to be starting from the complete ground up, there is no automation at all. Zero automation already. And see what is the application is built with. If it is built with react or Vue JS or the latest JavaScript based framework then I would recommend to go with Puppeteer or Playwright to automate the applications which is really really good to go with. But if your application is built with something like the Microsoft's own platform, something like MVC based asp.net or Blazor or something like that, then probably it's better to go with Selenium C or Selenium Java if you're comfortable with that language. Yeah, that should be much better.
Okay Karthik, before we go, is there one piece of actionable advice you can give someone to help them with their software automation efforts and let us know the best way to find or contact you.
Okay, so the very best way is to go to exegeteautomation.com blog so I have a blog which you can put the contact so there are so many contact us pages for every post. You can comment there or you can contact me there. There is a contact email id like karthikegeek.co.in so you can contact me over there or you can always slack me. You can always chat with me on LinkedIn which is something I'm highly available on. Yeah, you can send me an email or LinkedIn that's a much better way. Or you can just put a comment in any of my videos in YouTube. I will be responding to that.
Thank you Karthik for your automation awesomeness. Links to everything of value we covered in this episode. Head on over to test guild.com a297 and while you're there make sure to click on that Try for Free today link under the Exclusive Sponsor section to learn all about Sauce Labs awesome products and services. So that's it for this episode of the Test Guild Automation Podcast. I'm Joe. My mission is to help you succeed with creating end to end full stack automation awesomeness. As always, test everything and keep the good. Cheers.
Thanks for listening to the Test Guild Automation Podcast. Head on over to testguild.com for full show notes, amazing blog articles, and online testing conferences. Don't forget to subscribe to the Guild to continue your testing journey.
More from JoeBot
Automation Testing Podcast 2026: New Schedule, Events, Discounts with Joe Colantonio
Automation Guild Kickoff, AWS Nova, Karate v2, and AI Testing Reality and more TGNS177