From test-data-generator
Generates realistic test data for users, products, orders, technical fields, and custom schemas via JSON/TS/GraphQL/DB. Supports Faker.js factories, factory patterns, and database seeding scripts.
npx claudepluginhub flight505/skill-forge --plugin test-data-generatorGenerate realistic test data including users, products, orders, and custom schemas for comprehensive testing. - Names (realistic, locale-aware) - Email addresses - Passwords (hashed if needed) - Addresses - Phone numbers - Avatars - Birth dates - Profile info - Products (name, description, price, SKU) - Orders (items, totals, status) - Invoices - Transactions - Companies - Categories - UUIDs - ...
Generates realistic test data for users, products, orders, technical fields, and custom schemas via JSON/TS/GraphQL/DB. Supports Faker.js factories, factory patterns, and database seeding scripts.
Analyzes database schemas from Prisma, Drizzle, or TypeORM to generate realistic test data with relations. Writes seed scripts and runs them to verify.
Expert in test data management, synthetic data generation, data lifecycle orchestration, privacy compliance, and automated dataset provisioning for testing environments.
Share bugs, ideas, or general feedback.
Generate realistic test data including users, products, orders, and custom schemas for comprehensive testing.
import { faker } from '@faker-js/faker';
function createUser(overrides = {}) {
return {
id: faker.string.uuid(),
email: faker.internet.email(),
name: faker.person.fullName(),
age: faker.number.int({ min: 18, max: 80 }),
address: {
street: faker.location.streetAddress(),
city: faker.location.city(),
country: faker.location.country(),
zipCode: faker.location.zipCode()
},
createdAt: faker.date.past(),
...overrides
};
}
// Generate single user
const user = createUser({ age: 25 });
// Generate multiple users
const users = Array.from({ length: 100 }, () => createUser());
function createProduct() {
return {
id: faker.string.uuid(),
name: faker.commerce.productName(),
description: faker.commerce.productDescription(),
price: parseFloat(faker.commerce.price()),
category: faker.commerce.department(),
inStock: faker.datatype.boolean(),
sku: faker.string.alphanumeric(8).toUpperCase(),
images: Array.from({ length: 3 }, () => faker.image.url())
};
}
function createOrder(userId) {
const items = Array.from(
{ length: faker.number.int({ min: 1, max: 5 }) },
() => ({
productId: faker.string.uuid(),
quantity: faker.number.int({ min: 1, max: 3 }),
price: parseFloat(faker.commerce.price())
})
);
const subtotal = items.reduce((sum, item) =>
sum + (item.price * item.quantity), 0
);
return {
id: faker.string.uuid(),
userId,
items,
subtotal,
tax: subtotal * 0.08,
total: subtotal * 1.08,
status: faker.helpers.arrayElement([
'pending', 'processing', 'shipped', 'delivered'
]),
createdAt: faker.date.recent()
};
}
// Seed script
async function seedDatabase() {
// Generate users
const users = Array.from({ length: 100 }, () => createUser());
await db.users.insertMany(users);
// Generate products
const products = Array.from({ length: 500 }, () => createProduct());
await db.products.insertMany(products);
// Generate orders (2-5 per user)
const orders = users.flatMap(user =>
Array.from(
{ length: faker.number.int({ min: 2, max: 5 }) },
() => createOrder(user.id)
)
);
await db.orders.insertMany(orders);
console.log(`Seeded:
- ${users.length} users
- ${products.length} products
- ${orders.length} orders
`);
}