In solidarity, please consider financially support Ukraine (UNITED24, "Come Back Alive" fund) or check out other ways to support Ukraine.
C#/.NET automated web testing full featured framework
Atata Templates 2.14.1 Visual Studio extension is released with an update of package references.
Atata.WebDriverSetup 2.10.0 is released with a fix for Chrome driver downloading.
Atata.KendoUI 2.3.0 is released with an update of Atata package reference.
Based on Selenium WebDriver and preserves all its features.
Provides unique fluent page object pattern that is easy to implement and maintain.
Contains a rich set of ready to use components for inputs, tables, lists, etc.
Works on any .NET test engine (e.g. NUnit, xUnit, SpecFlow) as well as on CI systems like Jenkins, GitHub Actions or TeamCity.
A bunch of triggers to bind with different events to extend component behavior.
A set of fluent assertion methods and triggers for a component and data verification.
Defines the default component search strategies as well as additional settings. Atata.Configuration.Json provides flexible JSON configurations.
Built-in customizable logging; screenshots and snapshots capturing functionality.
Atata.Bootstrap and Atata.KendoUI packages have a set of ready to use components. Framework supports any kind of extending.
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();