Automated Software Testing with SpecFlow in Selenium

In this SpecFlow automation tutorial, I have 2 scenarios and 2 browser configurations, so I’ll see 4 tests in the explorer window. The Traits column is populated with the tags I used for the scenarios. Now that the Feature file is created, we add the Feature & Scenario information in it.

automated software testing with specflow

Explore the possibility to hire a dedicated R&D team that helps your company to scale product development. Test the product and successfully implement the tasks of the most complex business challenges with GlobalCloudTeam. We provide error-free, stable product work and customized solutions to make your software run much faster. By default VS will create a UnitTest1.cs, we will dispose of this class later, first let’s add Specflow to our project by going to Manage Nuget Packages on our solution. For this example, we are going to create a VS Project of MSTest Test Project type, is important to notice that we can use any type of project to implement Specflow, even a Specflow-type project.

Both these libraries are open source and are supported by a large community, meaning there is almost always someone who has run into the problem you’re facing before and from whom you can learn how to solve it. BDD ensures that every contributor remains on the same page, and does not face any technical challenges while contributing to writing test scenarios. BDD uses the Gherkin language, which helps determine test scenarios without technical knowledge. To get started, we have to create a new project named ToDoApp of type “Class Library” with the .Net Framework 4.5.2 support.

Upload a Project to Github using the Command Line

Receive peer support through the forum, alternatively file a bug or feature request, and vote for them in our public issue tracker. Build, check and run automated tests on the server even before committing your changes – keeping your code base clean automated software testing with specflow at all times. Don’t wait for a build to finish to discover that something is wrong. Form your project tree to inherit parent settings and permissions. Create templates with common settings and inherit any number of build configurations from them.

Any element on a web page can be located using the HTML DOM framework for both HTML and XML documents. These tags are used to identify and group related scenarios or scenarios that will be run together at some point. Then, add one .json file for each environment where you want to run your tests. For example, I’ll test Firefox on Windows 10 and Chrome on Windows 11. The aim is to address typical issues testers run into when automating websites, applications, or APIs, such as working with multiple browsers or always being up-to-date with the latest browser version. SpecFlow Actions is a solution provided by SpecFlow that enables us to integrate our SpecFlow tests with Selenium.

automated software testing with specflow

Then, created test cases are tied to the application code with the help of so-called bindings, giving you the opportunity to execute them using any preferred testing framework. Moreover, tests can be executed using SpecFlow+ Runner, which is SpecFlow’s own test runner that comes with advanced options and reports in the HTML, XML, and JSON formats. It offers freedom to users to create feature files without having any technical knowledge, thereafter, a tester binds the Gherkin language to its necessary source code. Automation Tests (NUnit framework + Selenium WebDriver) – This contains the test implementation corresponding to every Scenario.

We will use the Visual Studio editor, to develop the Selenium tests using the NUnit framework. Click on Create a new project from the Visual Studio welcome page. Second, the high reliability of the Boa test solution means that the PrecisionLender team can trust test results. BrowserStack Automate is a test automation platform for testing websites on 2,000+ real mobile devices and browsers. Devs and QAs rely on BrowserStack’s highly reliable cloud infrastructure to run thousands of tests in parallel and scale infrastructure effortlessly. Tesco, Shell, NVIDIA, Discovery, Wells Fargo, and over 50,000 companies have eliminated painful manual infrastructure operations by moving to BrowserStack’s platform.

Getting Started With SpecFlow

The next important step in this SpecFlow tutorial is to create Step Definitions for each Scenario Step that is present in the Feature file. For generating the Step Definitions, just Right Click on the Scenario Steps and select ‘Generate Step Definitions’. Once the project is set up, we install the necessary packages required for executing the code.

SpecFlow helps automate the testing of features using Gherkin, the language that forms the foundation of BDD. With SpecFlow, you can create test cases using simple Gherkin syntax and one of the seventy supported natural languages. This helps to establish solid communication between subject matter experts and developers as well as technical and non-technical team members.

automated software testing with specflow

Scenario is broken-down into multiple scenario steps by making use of the Gherkin keywords i.e. SpecFlow, also known as Cucumber for .NET is an open-source tool used for automating .NET applications. These tools are bridges between the business language and technical language. Using these tools, the test-cases for automated software testing with SpecFlow are written in English-like language understandable by all the stakeholders of the project, developers and non-developers alike. Selenium uses the Selenium WebDriver for performing actions on the corresponding web elements displayed on the web page. For local Selenium testing, you should have the corresponding Selenium WebDriver installed in the machine.

Overview Of BDD With SpecFlow

In case, .Net Framework 4.5.2 is not installed in your machine, you can download the same for Windows 10 from here. You will witness an error if you try adding more than one of the packages that are used for executing your tests e.g. In case you already have a project that uses the older version of SpecFlow e.g. This will be best suited for this SpecFlow tutorial for using SpecFlow Selenium C#. Before updating to the latest version of SpecFlow, it is recommended that you take a back-up of the project as you may encounter build/compilation errors after the update. Take this certification to master the fundamentals of Selenium automation testing with C# and prove your credibility as a tester.

  • Once the project is successfully configured, the Setup and Test methods are provided automatically along with the import statement – using NUnit.Framework.
  • Reusable, modular, and maintainable automated tests can be created using BDD.
  • You will witness an error if you try adding more than one of the packages that are used for executing your tests e.g.
  • These user stories are used for documentation of the feature, triggering, and automating acceptance tests.
  • What makes it special is that it is designed especially for .Net projects.
  • Once it is downloaded, you can install it by double-clicking on the downloaded .vsix file.
  • Remove SpecFlowSingleFileGenerator from the ‘Custom Tool’ field in the Properties section for each feature file.

The beauty here is that the entire test is extremely easy to read by anybody, not just technical people or automation testers. And also, anybody can write this type of scenario without understanding the inner workings of a test automation framework. Since all of these test scripts are written in plain English, they also serve as documentation for the project. SpecFlow is a framework for defining these scenarios in a more structured way and tying them to tests that run against the code.

Getting Started With SpecFlow Testing

One major hurdle in using the local Selenium Grid is that it cannot be scaled for full-fledged automated cross browser testing. It manages the browser’s lifetime and offers simple configuration options and Selenium helper methods. This a list of Automated Testing software that integrates with SpecFlow. Use the filters on the left to add additional filters for products that have integrations with SpecFlow.

A scenario outlines how a particular feature should behave with different types/values of input parameters. Gherkin is a domain-specific language using which you can come up with scenarios that describe business behavior, without getting into the technical implementation. We will get into detail in the later sections of this SpecFlow tutorial for SpecFlow Selenium C#. BDD uses an outside-in approach where the acceptance tests are designed based on business behavior rather than technical implementation. The advantage of this development approach is that the language being used is ubiquitous in nature and can be easily understood by technical, as well as non-technical personnel. We can have automated software testing with SpecFlow by configuring Selenium in C#.

What is the difference between cucumber and SpecFlow?

The combination of the two eliminates the need for artificial timeouts – the primary cause of flaky tests. Playwright assertions are created specifically for the dynamic web. Checks are automatically retried until the necessary conditions are met. Configure test retry strategy, capture execution trace, videos, screenshots to eliminate flakes. Browsers run web content belonging to different origins in different processes.

Appium aims to automate any mobile app from any language and any test framework, with full access to back-end APIs and DBs from test code. Write tests with your favorite dev tools using all the above programming languages, and probably more (with the Selenium WebDriver API and language-specific client libraries). SpecFlow is distributed under open-source code, which can be found on GitHub. With SpecFlow, you can define scenarios for the behavior of a software product. Other tools that can be used with BDD technology are Cucumber, Jasmine, and Lettuce.

More from Software Testing Solutions

BDD is a variation of ATDD , the major difference being the focus is now on ‘behavior’ rather than ‘test’. That is what we will try to understand better in this SpecFlow tutorial. Software Testing Solutions ensure a right mix of Manual and Automated Software Testing and provide support through the Testing Life Cycle. The unbiased test reports help smoother implementations with near zero post-delivery defects and higher customer satisfaction. In SpecFlow, parameters passed in the tests can be mapped to the text instructions avoiding the need to the sequence of parameters in text.

What is WinAppDriver?

Open the project and verify if there are no code files/feature files that are missing. Since we have not yet updated to the latest version of SpecFlow, hence the project should still compile and build. This file contains the name of the feature to be tested, test scenarios and when to execute the test scripts. The test scripts are prepared in a class based on the test scenarios created. Later these test scripts can be executed as unit tests using NUnit or MTest. SpecFlow can be integrated with a number of IDEs including Visual Studio, SharpDevelop and MonoDevelop to roll out automated testing.

It is a strategy to build conversations among different teams of the project to unite towards identifying users’ stories. There is no change in the SpecFlow feature file and remaining business logic remains completely unchanged. Once the file has been created, we have to make sure that each Scenario step has a corresponding Step Definition else that particular Scenario step will be unbound. With the rise of Agile, teams have been trying to minimize the gap between the stakeholders and the development team. Integrations with IDEs like Visual Studio and Rider as well as integrations with NUnit, xUnit, MSTest, Browserstack, Azure DevOps, Autofac, and others also significantly simplify a testing process.

I hope this SpecFlow tutorial gave you good insights about using SpecFlow with Selenium, C#. Appium is an open source test automation framework for use with native, hybrid and mobile web apps. It drives iOS, Android, and Windows apps using the WebDriver protocol. Appium is built on the idea that testing native apps shouldn’t require including an SDK or recompiling your app. And that you should be able to use your preferred test practices, frameworks, and tools. Appium is an open source project and has made design and tool decisions to encourage a vibrant contributing community.


SpecFlow is an open-source version of Cucumber for the .Net framework. Using SpecFlow with Selenium C#, BDD tests can be generated using the Gherkin language and executed using the NUnit test framework. It can also be used with other test frameworks like MSTest, xUnit, etc.

The Cucumber files use the extension .feature, and the scenarios must follow syntax rules called Gherkin. BDD is built on TDD (Test-driven development), which makes it an approach where tests are written first. SpecFlow is a popular, open-source test automation framework supporting BDD and ATDD. It is a perfect match for testing web apps with the .Net framework. With the help of SpecFlow, it is easy to define, manage, and execute easily readable test cases.

The above example makes use of the most frequently used keywords in Gherkin i.e. In most scenarios, BDD tests have a longer shelf-life when compared to TDD tests as the major focus is on business behavior rather than the actual test implementation. With the information presented in this article series, you’ll have everything you need to decide if using SpecFlow can help you in your software development and test automation project.