Introduction
Plugin that allows interaction with MongoDB server using Cypress commands.
Installation
run npm install cypress-mongodb
configure (see below)
profit
Supported and tested MongoDB versions
4.4, 5.0, 6.0
Usage
cy.createCollection('new_collection', {database: 'new_database'});
const oneDocument = {document: 1};
cy.insertOne(oneDocument, {collection: 'some_collection', database: 'some_database'}).then(res => {
cy.log(res);
});
const manyDocuments = [{document: 1}, {document: 2}];
cy.insertMany(manyDocuments, {collection: 'some_other_collection'}).then(res => {
console.log(res);
});
const deleteClause = {document: 1};
cy.deleteOne(oneDocument, {collection: 'new_collection', database: 'some_database'}).then(res => {
cy.log(res);
});
cy.deleteMany(deleteClause).then(res => {
cy.log(res);
});
const pipeline = [];
cy.aggregate(pipeline).then(res => {
cy.log(res);
});
cy.dropCollection('start_new').then(res => {
cy.log(res);
});
createCollection
and dropCollection
have the option to failSilently
.
cy.createCollection('existing_collection', {failSilently: true}).then(res => {
cy.log(res);
});
cy.dropCollection('nonexistent_collection', {failSilently: true}).then(res => {
cy.log(res);
});
Environment setup
Add the following env
properties in your cypress.config.js
file:
{
module.exports = defineConfig({
"env": {
"mongodb": {
"uri": "mongodb://localhost:27017",
"database": "database_name",
"collection": "collection_name"
}
}
});
}
Note: only mongodb.uri
is mandatory, you can always override/set database and collection names in each cypress
mongodb command using options. You can set both local and remote urls.
Plugin configuration - JavaScript
In your cypress.config.js
add the following:
const mongo = require('cypress-mongodb');
module.exports = defineConfig({
e2e: {
setupNodeEvents(on, config) {
mongo.configurePlugin(on);
}
}
});
In your cypress/support/e2e.js
add the following:
const mongo = require('cypress-mongodb');
mongo.addCommands();
Plugin configuration - TypeScript
In your cypress.config.ts
add the following:
import {defineConfig} from 'cypress'
import {configurePlugin} from 'cypress-mongodb';
export default defineConfig({
e2e: {
setupNodeEvents(on) {
configurePlugin(on);
}
}
});
In your cypress/support/e2e.ts
add the following:
import {addCommands} from "cypress-mongodb";
addCommands();
Future development & support
Please create feature requests for things you'd like to see.
Please raise issues for any problems you encounter.