- Notifications
You must be signed in to change notification settings - Fork1
📜 Let your CodeceptJS tests talk to databases
License
thiagodp/codeceptjs-dbhelper
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Let your CodeceptJS tests talk to databases
This is aHelper forCodeceptJS that allows you to execute database queries and commands usingdatabase-js.
👉 It works withCodeceptJS 1, 2, and 3.
You have to install the library and the desired database drivers
Step 1 of 2:Install the helper
npm i -D codeceptjs-dbhelper
Step 2 of 2:Install a database driver
| Driver (wrapper) | Note | Installation command |
|---|---|---|
| ActiveX Data Objects | Windows only | npm i -D database-js-adodb |
| CSV files | npm i -D database-js-csv | |
| Excel files | npm i -D database-js-xlsx | |
| Firebase | npm i -D database-js-firebase | |
| INI files | npm i -D database-js-ini | |
| JSON files | npm i -D database-js-json | |
| MySQL | npm i -D database-js-mysql | |
| MS SQL Server | npm i -D database-js-mssql | |
| PostgreSQL | npm i -D database-js-postgres | |
| SQLite | npm i -D database-js-sqlite |
Seedatabase-js for the full list of available drivers.
In your CodeceptJS configuration file (e.g.,codecept.conf.js,codecept.json), includeDbHelper in the propertyhelpers :
..."helpers":{ ..."DbHelper":{"require":"./node_modules/codeceptjs-dbhelper"}}, ...
In CodeceptJS 2, every callback receivesI as an argument:
Scenario('test something',async(I)=>{// CodeceptJS 2 notation/* ... */});
In CodeceptJS 3, every callback receives anobject that contains the propertyI - that is,{ I }:
Scenario('test something',async({ I})=>{// CodeceptJS 3 notation/* ... */});
See theCodeceptJS docs for more information on how to upgrade your codebase.
The following examples are written withCodeceptJS 3.
BeforeSuite(async({ I})=>{// Connects to a database// The first parameter is the key that will hold a reference to the databaseI.connect("testdb","mysql://root:mypassword@localhost:3306/testdb");});AfterSuite(async({ I})=>{// Disconnects and removes the reference to the databaseawaitI.removeConnection("testdb");});Before(async({ I})=>{// Deletes all the records from the table 'user'awaitI.run("testdb","DELETE FROM user");// Inserting some usersawaitI.run("testdb","INSERT INTO user ( username, password ) VALUES ( ?, ? )","admin","123456");awaitI.run("testdb","INSERT INTO user ( username, password ) VALUES ( ?, ? )","bob","654321");awaitI.run("testdb","INSERT INTO user ( username, password ) VALUES ( ?, ? )","alice","4lic3p4s$");});// ... your feature ...// ... your scenarios ...
Feature('Foo');Scenario('Bar',async({ I})=>{// Queries a user from the databaseconstresults=awaitI.query("testdb","SELECT username, password FROM user WHERE username = ?","bob");constuser=results[0];// object in the first rowI.amOnPage('/login');I.fillField('#username',user.username);// bobI.fillField('#password',user.password);// 654321I.click('#ok');I.see('Welcome');});
/** * Connects to the database described by the given connection string. * *@param {string|number} key Identification for using in other commands. *@param {string|object} conn JDBC-like connection string or a connection object accepted by `database-js`. *@param {object|undefined} [driver] [OPTIONAL] Driver object, used by `database-js`. * *@returns {Connection} DatabaseJS' connection */connect(key:string|number,conn:string|object,driver?:object|undefined): any;/** * Disconnects and removes the database connection identified by the given key. * *@param {string|number} key Database identification key set in connect(). * *@returns {Promise<boolean>} If it was successful. */disconnect(key:string|number):Promise<boolean>;/** * Disconnects and removes the database connection identified by the given key. * *@param {string|number} key Database identification key set in connect(). * *@returns {Promise<boolean>} If it was successful. */removeConnection(key:string|number):Promise<boolean>;/** * Performs a query. * *@param {string|number} key Database identification key set in connect(). *@param {string} command Query to run. *@param {...any[]|undefined} [params] [OPTIONAL] Query parameters. * *@returns {Promise<any[]>} Query results. */query(key:string|number,command: string, ...params?:(any[]|undefined)[]):Promise<any[]>;/** * Executes a command. * *@param {string|number} key Database identification key set in connect(). *@param {string} command Command to run. *@param {any[]} [params] [OPTIONAL] Command parameters. * *@returns {Promise<any[]>} Command results. */run(key:string|number,command: string, ...params?: any[]):Promise<any[]>;/** * Creates a database connection. * *@param {string|object} conn JDBC-like connection string or a connection object accepted by `database-js`. *@param {object|undefined} [driver] [OPTIONAL] Driver object, used by `database-js`. * *@returns {Connection} DatabaseJS' connection */createConnection(conn:string|object,driver?:object|undefined): any;/** * Checks if there is a database connection with the given key. * *@param {string|number} key Database identification key set in connect(). * *@returns {boolean} */hasConnection(key:string|number): boolean;/** * Gets the database connection with the given key. * *@param {string|number} key Database identification key set in connect(). * *@returns {Connection} DatabaseJS' connection. */getConnection(key:string|number): any;
codeceptjs-cmdhelper - Execute commands in the console/terminal
MIT ©Thiago Delgado Pinto
About
📜 Let your CodeceptJS tests talk to databases
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.