Boa Constrictor Update (May 2025)

Boa Constrictor, the .NET Screenplay Pattern, started in 2018 and is still actively used in 2025. In total, its NuGet packages have over half a million downloads! However, the project’s activity has slowed down significantly in recent times. It’s been two and a half years since I gave my last major update about Boa Constrictor. In this article, I want to cover major developments, explain why things have been slow, and suggest a path for the future.

Major developments

We accomplished many of the goals for Boa Constrictor 3. In fact, all the Boa Constrictor packages are currently set at version 4! Here’s a quick summary of what’s available:

  1. Each set of interactions has its own dedicated NuGet package. For example, Boa.Constrictor.Selenium contains all the Selenium WebDriver interactions for Web UIs, and Boa.Constrictor.RestSharp contains all the RestSharp interactions for APIs. That way, testers can configure their test projects to download only the packages that are needed.
  2. We released a new XUnit package that provides special loggers for XUnit tests.
  3. We recently released a new Playwright package that provides Abilities and Interactions for Playwright. This package should be treated as a beta version initially.
  4. We updated all unit test projects to run on .NET 8.
  5. We made minor fixes and updated various dependency versions.

Many thanks to all our contributors for all their hard work. Special thanks goes to “thePantz” for implementing the XUnit and Playwright packages.

Unfortunately, there are some things we did not accomplish. We did not add shadow DOM support for the Selenium package as hoped. We also did not add support for Applitools, and we no longer plan to add it. There is also a lot of information that is now missing from the doc site.

Why have things been slow?

The answer is simple: the maintainers are no longer actively using Boa Constrictor. I haven’t used Boa Constrictor in my day-to-day work since I left Q2 in November 2021, which was 3.5 years ago. The other maintainers have also either moved onto new jobs or new responsibilities. Things moved quickly from about 2020-2021 because the maintainers and I used Boa Constrictor on a daily basis. Now, it’s difficult for us to find time to work on the project because we just don’t use it ourselves anymore. Frankly, I have barely touched .NET since leaving Q2.

A path for the future

The Boa Constrictor project is neither “dead” nor “abandoned,” but there need to be some changes for it to continue in the future.

First, we have invited new maintainers to the project who have demonstrated a sense of ownership and contributed meaningful changes to the codebase. These new maintainers use Boa Constrictor actively and have the right stuff to keep the project going. Note that “maintainers” are folks who have the power to approve and complete pull requests. Anyone can submit code contributions to the project – you do not need to be a maintainer to participate.

Second, I will focus more on project management and less on coding. I haven’t made any serious or significant code contributions to Boa Constrictor in about two years, and since I’m not actively using the project itself (let alone working in the .NET stack), it is unlikely that I will be contributing any code in the foreseeable future. For transparency, I should recognize the reality and publicly state it. I still want Boa Constrictor to be useful to others for .NET test automation. I think the best way for me to serve the project and the community now is to empower others to contribute.

Third, the community should be empowered to make their own Boa Constrictor packages. Boa Constrictor’s design adheres to SOLID principles, which enables developers to add new Abilities, Tasks, and Questions without needing to modify the core pattern or any of the other Interactions. New packages do not necessarily need to be added to the main Boa Constrictor repository, either. Developers could build and maintain new Screenplay Interactions privately for themselves and their teams. They could also release them to NuGet as their own open source packages separate from the main project. If they feel like their package adds major value, they could contribute it to the main repository through a pull request. All of these are valid options, and I would support any of them. Just note that contributing to the main repository will likely be the slowest path because the maintainers would need to review the code, which could take a long time. So, if you want a particular Boa Constrictor package, be empowered to build it yourself. Don’t wait for the maintainers to build it for you.

The Screenplay Pattern’s place in test automation

When I first started implementing the Screenplay Pattern in C#, I was looking for a better alternative to page objects with Selenium WebDriver. Previous test projects had burned me with unintelligible page object classes that stretched for thousands of lines each with duplicative methods and no proper waiting. I saw the Screenplay Pattern as a way to define better web interactions that could handle waiting automatically and be composed together. Then, I realized that it could be used for any kind of testing, not just Web UI. The pattern provided a natural way to join multiple kinds of interactions together into seamless workflows. It made test automation for large, complex system manageable and well-organized, rather than the mess it typically becomes.

One of my biggest goals in releasing Boa Constrictor as an open source project was to reinvigorate interest in the Screenplay Pattern in our industry. I believed it was the way to make better interactions for better automation, and I wanted to make it simpler for folks to understand. Based on the number of package downloads, the event talks, and the Discord server, I think we accomplished that goal.

Leave a comment