Skip to content

Latest commit

 

History

3,896 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NuGet GitHub release Build status Atata Templates
Slack Atata docs X

Atata Framework is a full-featured C#/.NET test automation framework built around a powerful context-driven architecture and session-based execution model. It provides an intuitive, fluent page object pattern for web UI testing, which remains its core capability, while Atata 4 expands beyond web UI automation into a universal, extensible testing ecosystem. Designed to minimize boilerplate, Atata enables clean, declarative test components using properties, attributes, and reusable building blocks. With customizable built-in logging, a unique event-driven trigger system, and a rich ecosystem of ready-to-use components, Atata provides a consistent foundation for building maintainable and scalable automated tests across different testing domains.

The package targets .NET 8.0 and .NET Framework 4.6.2.

Features

  • WebDriver. Provides Selenium WebDriver session functionality. Preserves all WebDriver capabilities for local, remote, and headless browser automation.
  • Page object model. Provides a unique fluent page object pattern for concise, maintainable page and component definitions.
  • Components. Includes a rich set of ready-to-use UI testing components for inputs, tables, lists, etc.
  • Smart verification. Offers fluent assertions, aggregate checks, wait-aware verification, and built-in verification triggers.
  • Triggers. Includes a set of triggers to bind with different events to extend component behavior.
  • Configuration. Enables flexible settings, variables, URL templates, environment-aware run options, etc.
  • Logging and reporting. Built-in customizable structured logging, screenshots, page snapshots, artifact generation, and extensible log consumer support.
  • Extensible ecosystem. Features a bunch of add-ons such as Atata.HtmlValidation, Atata.NLog, Atata.AspNetCore, Atata.Testcontainers.
  • Integration. Easily integrates with NUnit, xUnit, MSTest, Reqnroll via dedicated packages. Works flawlessly on CI systems like GitHub Actions, Jenkins, etc.

Usage

Page object

Simple sign-in page object for https://demo.atata.io/signin page:

using Atata;

namespace SampleApp.UITests;

using _ = SignInPage;

[Url("/signin")] // Relative URL of the page.
public class SignInPage : Page<_>
{
    [FindByLabel] // Finds <label> element containing "Email" (<label for="email">Email</label>), then finds text <input> element by "id" that equals label's "for" attribute value.
    public TextInput<_> Email { get; private set; }

    [FindById("password")] // Finds password <input> element by id that equals "password" (<input id="password" type="password">).
    public PasswordInput<_> Password { get; private set; }

    [FindByValue(TermCase.Title)] // Finds button element by value that equals "Sign In" (<input value="Sign In" type="submit">).
    public Button<_> SignIn { get; private set; }
}

Test

Usage in the test method:

[Test]
public void SignIn()
{
    Go.To<SignInPage>()
        .Email.Set("admin@mail.com")
        .Password.Set("abc123")
        .SignIn.Click();
}

Find out more on Atata usage. Check atata-framework/atata-samples repository for different Atata test scenario samples.

Demo

Demo atata-framework/atata-sample-app-tests UI tests application demonstrates different testing approaches and features of Atata Framework. It covers main Atata features: page navigation, data input and verification, interaction with pop-ups and tables, logging, screenshot capture, etc.

Sample test:

[Test]
public void Create() =>
    Login()
        .New()
            .ModalTitle.Should.Be("New User")
            .General.FirstName.SetRandom(out string firstName)
            .General.LastName.SetRandom(out string lastName)
            .General.Email.SetRandom(out string email)
            .General.Office.SetRandom(out Office office)
            .General.Gender.SetRandom(out Gender gender)
            .Save()
        .GetUserRow(email).View()
            .AggregateAssert(x => x
                .Header.Should.Be($"{firstName} {lastName}")
                .Email.Should.Be(email)
                .Office.Should.Be(office)
                .Gender.Should.Be(gender)
                .Birthday.Should.Not.BeVisible()
                .Notes.Should.Not.BeVisible());

Documentation

Find out more on Atata Docs and on Getting Started page in particular.

Tutorials

You may also find the following tutorials helpful:

Community

Feedback

Any feedback, issues and feature requests are welcome.

If you faced an issue please report it to Atata Issues, ask a question on Stack Overflow using atata tag or use another Atata Contact way.

Contact author

Contact me, Yevhenii Shunevych, if you need help with test automation using the Atata Framework. You can hire me for test automation development or consulting if you are looking for a high-quality, maintainable automation solution for your project.

Sponsorship

Many thanks to the sponsors that regularly support the development of Atata Framework through donations:

If Atata Framework is useful to you or your company, consider supporting the framework development with a donation.

Contributing

Check out Contributing Guidelines for details.

SemVer

Atata Framework tries to follow Semantic Versioning 2.0 when possible. Sometimes Selenium.WebDriver dependency package can contain breaking changes in minor version releases, so those changes can break Atata as well. But Atata manages its sources according to SemVer. Thus backward compatibility is mostly followed and updates within the same major version (e.g. from 2.1 to 2.2) should not require code changes.

License

Atata is an open source software, licensed under the Apache License 2.0. See LICENSE for details.

Releases

Sponsor this project

Used by

Contributors

Languages