Coder Social home page Coder Social logo

cuixiao / atata Goto Github PK

View Code? Open in Web Editor NEW

This project forked from atata-framework/atata

0.0 1.0 0.0 9.9 MB

C#/.NET test automation framework for web

Home Page: https://atata.io

License: Apache License 2.0

HTML 3.77% C# 95.73% PowerShell 0.50%

atata's Introduction

NuGet GitHub release Build status Gitter Slack Atata docs Twitter Atata Templates

C#/.NET web UI test automation full featured framework based on Selenium WebDriver. It uses fluent page object pattern.

Supports .NET Framework 4.0+ and .NET Core/Standard 2.0+.

Features

  • WebDriver. Based on Selenium WebDriver and preserves all its features.
  • Page Object Model. Provides unique fluent page object pattern that is easy to implement and maintain.
  • Components. Contains a rich set of ready to use components for inputs, tables, lists, etc.
  • Integration. Works on any .NET test engine (e.g. NUnit, xUnit, SpecFlow) as well as on CI systems like Jenkins, Azure DevOps or TeamCity.
  • Triggers. A bunch of triggers to bind with different events to extend component behavior.
  • Verification. A set of fluent assertion methods and triggers for the component and data verification.
  • Configurable. Defines the default component search strategies as well as additional settings. Atata.Configuration.Json provides flexible JSON configurations.
  • Reporting/Logging. Built-in customizable logging and screenshot capturing functionality.
  • Extensible. Atata.Bootstrap and Atata.KendoUI packages have a set of ready to use components. Framework supports any kind of extending.

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.
    [VerifyH1] // Verifies that H1 header text equals "Sign In" upon page object initialization.
    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("[email protected]").
        Password.Set("abc123").
        SignIn.Click();
}

Setup

[SetUp]
public void SetUp()
{
    AtataContext.Configure().
        UseChrome().
        UseBaseUrl("https://demo.atata.io/").
        Build();
}

Find out more on Atata usage. Check atata-framework/atata-samples 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 User_Create()
{
    string firstName, lastName, email;
    Office office = Office.NewYork;
    Gender gender = Gender.Male;

    Login().
        New().
            ModalTitle.Should.Equal("New User").
            General.FirstName.SetRandom(out firstName).
            General.LastName.SetRandom(out lastName).
            General.Email.SetRandom(out email).
            General.Office.Set(office).
            General.Gender.Set(gender).
            Save().
        Users.Rows[x => x.FirstName == firstName && x.LastName == lastName && x.Email == email && x.Office == office].View().
            Header.Should.Equal($"{firstName} {lastName}").
            Email.Should.Equal(email).
            Office.Should.Equal(office).
            Gender.Should.Equal(gender).
            Birthday.Should.Not.Exist().
            Notes.Should.Not.Exist();
}

Documentation

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

Tutorials

You can also check the following tutorials:

Contact

Feel free to ask any questions regarding Atata Framework. Any feedback, issues and feature requests are welcome.

You can ask a question on Stack Overflow using atata tag.

If you faced an issue please report it to Atata Issues, write to Atata Gitter or just mail to [email protected].

Links

Author

Contact me if you need a help in test automation using Atata Framework, or if you are looking for a quality test automation implementation for your project.

License

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.