In this Cypress framework, we have made certain useful additions that cypress.io doesn't provide by default. In this article, we will be looking at how we can leverage a connection to an SQL database and use this to validate values stored inside a database table.
Install pg
pg is a non-blocking PostgreSQL client for Node.js. Pure JavaScript and optional native libpq bindings. We will use this as a connector for our JavaScript code to the SQL database. We start by executing the following command
pg should get reflected in package.json file at the end of devDependencies.
Connecting to an SQL database
In order to connect to a database, we will need the following connection information for the DB. We will add this information towards the end in cypress.json file inside "env" object.
In this article, we are using a simple "pokemonDB" DB and will make our actions on a "pokemon" table that has the following information related to pokemon creatures:
We will start by adding a new Cypress Task called "DATABASE". For this, we will add a new task in the cypress/plugins/index.js file. This task accepts two main things:
i) dbConfig - (this the DB connection info retrieved from cypress.json file using Cypress.env() ii) sql - (this is the SQL command which we need to execute)
Now in order to execute a simple "SELECT * FROM pokemon" SQL query, we will create a sample feature file called DB_test1.feature
and the respective JavaScript code will become like the following. Here we provide the SQL query part under "sql" argument
Then on executing this test our code will yield all records of the table and printing them on the console.
Using Assertions
In order to make assertions on the values retrieved from DB, it will have to be done inside then block where we get the "result" object: