In solidarity, please consider financially support Ukraine (UNITED24, "Come Back Alive" fund) or check out other ways to support Ukraine.
C#/.NET web test automation full-featured framework
Atata Framework 4 introduces session-based WebDriver separation, hierarchical AtataContext, session pooling & sharing, new modules, and more - moving Atata toward a universal automation framework.
Atata 3.13.0 is released with an upgrade of Selenium.WebDriver to v4.48.0.
Atata 3.12.0 is released with a DOM mutation waiting functionality and an upgrade of Selenium.WebDriver to v4.45.0.
Provides Selenium WebDriver session functionality. Preserves all WebDriver capabilities for local, remote, and headless browser automation.
Provides a unique fluent page object pattern for concise, maintainable page and component definitions.
Includes a rich set of ready-to-use UI testing components for inputs, tables, lists, etc.
Offers fluent assertions, aggregate checks, wait-aware verification, and built-in verification triggers.
Includes a set of triggers to bind with different events to extend component behavior.
Enables flexible settings, variables, URL templates, environment-aware run options, etc.
Built-in customizable structured logging, screenshots, page snapshots, artifact generation, and extensible log consumer support.
Features a bunch of add-ons such as Atata.HtmlValidation, Atata.NLog, Atata.AspNetCore, Atata.Testcontainers.
Easily integrates with NUnit, xUnit, MSTest, Reqnroll via dedicated packages. Works flawlessly on CI systems like GitHub Actions, Jenkins, etc.
using Atata;
namespace SampleApp.UITests;
using _ = SignInPage;
[Url("signin")] // Relative URL of the page.
public class SignInPage : Page<_>
{
[FindById] // Finds text input by "email" id.
public TextInput<_> Email { get; private set; }
[FindById] // Finds password input by "password" id.
public PasswordInput<_> Password { get; private set; }
[FindByContent] // Finds button by "Sign In" text content.
public Button<_> SignIn { get; private set; }
}
[Test]
public void SignIn() =>
Go.To<SignInPage>()
.Email.Type("admin@mail.com")
.Password.Type("abc123")
.SignIn.Click();
[SetUp]
public void SetUp() =>
AtataContext.Configure()
.UseChrome()
.UseBaseUrl("https://demo.atata.io/")
.Build();
[TearDown]
public void TearDown() =>
AtataContext.Current?.Dispose();