Generate realistic and diverse test data for Cypress tests using Faker.js. This plugin enhances your test suites with random data for various entities.
- Generate data for:
- Users (with customizable age ranges and countries)
- Products (including name, price, stock status)
- Orders (with multiple products)
- Reviews (with ratings and comments)
- Categories
- Companies (including industry, revenue, employees)
- Medical records
- Travel itineraries
- Education records
- Job listings
- Vehicles
- Support for localization
- Consistent data generation with seed support
-
Install the plugin as a dev dependency:
npm install --save-dev cypress-test-data-generator
-
Include the plugin in your Cypress configuration (usually in
cypress.config.js
):const dataGenerator = require('cypress-test-data-generator'); module.exports = defineConfig({ e2e: { setupNodeEvents(on, config) { on('task', dataGenerator(on, config)); }, }, });
cy.task('generateUser', { ageRange: { min: 20, max: 30 }, country: 'USA' }).then((user) => {
cy.log(`Generated User: ${JSON.stringify(user)}`);
});
cy.task('generateProduct').then((product) => {
cy.log(`Generated Product: ${JSON.stringify(product)}`);
});
cy.task('generateOrder', { productCount: 5 }).then((order) => {
cy.log(`Generated Order: ${JSON.stringify(order)}`);
});
cy.task('generateReview').then((review) => {
cy.log(`Generated Review: ${JSON.stringify(review)}`);
});
cy.task('generateCategory').then((category) => {
cy.log(`Generated Category: ${JSON.stringify(category)}`);
});
cy.task('generateCompany').then((company) => {
cy.log(`Generated Company: ${JSON.stringify(company)}`);
});
cy.task('generateMedicalRecord').then((record) => {
cy.log(`Generated Medical Record: ${JSON.stringify(record)}`);
});
cy.task('generateTravelItinerary').then((itinerary) => {
cy.log(`Generated Travel Itinerary: ${JSON.stringify(itinerary)}`);
});
cy.task('generateEducation').then((education) => {
cy.log(`Generated Education: ${JSON.stringify(education)}`);
});
cy.task('generateJobListing').then((jobListing) => {
cy.log(`Generated Job Listing: ${JSON.stringify(jobListing)}`);
});
cy.task('generateVehicle').then((vehicle) => {
cy.log(`Generated Vehicle: ${JSON.stringify(vehicle)}`);
});
Generates a random user object.
- Options:
seed
: Number to seed the random generator for consistent resultslocale
: Locale for localized data generationageRange
: An object specifying the minimum and maximum age (default:{ min: 18, max: 99 }
)country
: Specific country for the user's address (default: random)ageMin
: Minimum age (default: 18)ageMax
: Maximum age (default: 99)
Generates a random product object.
- Options:
seed
: Number to seed the random generatorlocale
: Locale for localized data generationcustomFields
: Object with additional fields to includerelatedProducts
: Array of related product objects
Generates a random order object.
- Options:
seed
: Number to seed the random generatorlocale
: Locale for localized data generationproductCount
: Number of products in the order (default: 3)
Generates a random review object.
- Options:
seed
: Number to seed the random generatorlocale
: Locale for localized data generationproductId
: Specific product ID for the review
Generates a random category object.
- Options:
seed
: Number to seed the random generatorlocale
: Locale for localized data generationparentId
: ID of the parent category (default: null)
Generates a random inventory object for a product.
- Parameters:
productId
: ID of the product
- Options:
seed
: Number to seed the random generatorlocale
: Locale for localized data generation
Generates a random coupon object.
- Options:
seed
: Number to seed the random generatorlocale
: Locale for localized data generation
Generates a random shipping method object.
- Options:
seed
: Number to seed the random generatorlocale
: Locale for localized data generation
Generates a random payment method object.
- Options:
seed
: Number to seed the random generatorlocale
: Locale for localized data generation
Generates an array of related product objects.
- Parameters:
mainProductId
: ID of the main productcount
: Number of related products to generate (default: 3)
- Options:
seed
: Number to seed the random generatorlocale
: Locale for localized data generation
Generates a product object with related products.
- Options:
seed
: Number to seed the random generatorlocale
: Locale for localized data generationrelatedProductCount
: Number of related products to generate (default: 3)
Generates a random job listing object.
- Options:
seed
: Number to seed the random generatorlocale
: Locale for localized data generation
Generates a random education object.
- Options:
seed
: Number to seed the random generatorlocale
: Locale for localized data generation
Generates a random company object.
- Options:
seed
: Number to seed the random generatorlocale
: Locale for localized data generation
Generates a random medical record object.
- Options:
seed
: Number to seed the random generatorlocale
: Locale for localized data generation
Generates a random travel itinerary object.
- Options:
seed
: Number to seed the random generatorlocale
: Locale for localized data generation
Generates a random vehicle object.
- Options:
seed
: Number to seed the random generatorlocale
: Locale for localized data generation
The plugin includes robust error handling for invalid inputs. If provided options are invalid (e.g., invalid age range), the plugin will throw descriptive errors to aid in debugging.
For detailed usage examples, refer to our example tests in the cypress/e2e
directory. These tests cover:
- Basic plugin usage
- Data generation for users, products, orders, reviews, companies, medical records, travel itineraries, education, job listings, and vehicles
Each file demonstrates various aspects and options of the data generator, serving as both functional verification and practical examples for users.
Contributions are welcome! Please feel free to submit a Pull Request.