Below is a summary of tools/libraries I have used to build large maintainable suite of auto tests on large web project.
Test Framework
XUnit
xUnit.net is a developer testing framework, built to support Test Driven Development, with a design goal of extreme simplicity and alignment with framework features.
Test setup
AutoFixture
AutoFixture makes it easier for developers to do Test-Driven Development by automating non-relevant Test Fixture Setup, allowing the Test Developer to focus on the essentials of each test case. (copied from nuget package description)
I could not stress enough how useful the library is. It allows to greatly decrease the lines of code for your test suits and make tests more readable.
AutoFixture.XUnit2
By leveraging the data theory feature of xUnit.net, this extension turns AutoFixture into a declarative framework for writing unit tests. In many ways it becomes a unit testing DSL (Domain Specific Language).
Test assert
FluentAssertions
A very extensive set of extension methods that allow you to more naturally specify the expected outcome of a TDD or BDD-style unit test. (copied from nuget package description)
It providesa a lot more possibilities to assert the test outcome than standard test frameworks do.
ApprovalTests
A picture’s worth a 1000 tests. Unit testing asserts can be difficult to use. Approval tests simplify this by taking a snapshot of the results, and confirming that they have not changed.