You are on page 1of 19

Cypress

Automation
What is Cypress?

Cypress is a next generation front end testing tool built for the modern web.
We address the key pain points developers and QA engineers face when
testing modern applications.

We make it possible to:

Set up tests

Write tests

Run tests

Debug Tests

Note: This enables you to write faster, easier and more reliable tests.
Why Cypress?

● Test Runner
● Dashboard service
● Large ecosystem
● CI Provider
● Automatic Waiting
● Cross browser Testing
Setting up Tests

● Installing Cypress
● Writing tests
● Running tests
● Debugging tests
Organizing Tests

● Cypress will automatically scaffold out a


suggested folder structure
● Cypress allows you to configure where
your tests, fixtures, and support files are
located
Working with fixtures

Fixtures are used as external pieces


of static data that can be used by
your tests.
Writing tests

<reference types="cypress" />


describe ( ‘our first suite’ , ( ) => {
it ( ‘login’ , ( ) => {
});
it.only ( ‘login-with-invalid-uid’ , ( ) => {
});
it.skip ( ‘login-with-invalid-pass’ , ( ) => {
});
});
Types Of Locators

● cy.get( ‘<tag name>’ )


● cy.get( ‘#<ID>’ )
● cy.get( ‘.<class name>’ )
● cy.get( ‘[<attribute name>]’ )
● cy.get( ‘[class=”<class name>”]’ )
● cy.get( ‘[<own created attributes>=
“<attributes name>”]”)
Test types

● End-to-end
● Component
● API

Through a large number of official and 3rd party plugins you can write
Cypress allys, visual, email and other types of tests.
Essential functions

● then( )
● wrap( )
● each( )
Navigation in Cypress

● Forward navigation.
● Backward navigation.
Cypress Hooks

● before(() => {})

● beforeEach(() => {})

● afterEach(() => {})

● after(() => {})


Cypress plugins

● Plugins enable you to tap into the Node process running outside of

the browser.

● Installing a plugin [npm install <plugin name> --save-dev]

● Configuring a plugin module.exports = (on, config) => { on('<event>',

(arg1, arg2) => { })}


Cypress custom commands

● Create new commands


Cypress.Commands.add(n
ame, callbackFn)
● Overwrite existing
commands
Cypress.Commands.overw
rite(name, callbackFn)
Assertions

● Bundles the popular Chai assertion library.


● Brings you dozens of powerful assertions for free.
● Helpful extensions for Sinon and jQuery.
● Two types of assertions:
❖ Implicite
❖ Explicit
Implicit assertion

When the assertion applies to the object provided by the parent


chained command, its called an Implicit assertion.

● should( )
● and( )
Explicit assertion

When there is a need to pass an explicit subject for the


assertion, it falls under the category of Explicit assertion.

● expect( )
● assert( )
Page Object Model

POM is a design principle that suggests to keep the objects and methods
separate from the test scripts.
Thank You

- Sagnick Biswas

You might also like