1. Faker inside of steps
Faker library is pre-installed and is available for calling inside of js snippets.
This approach is good when you need to generate data during execution of a test.
2. Use fixtures to create data before tests
Fixtures are great for inserting data into database before tests are started, and cleaning up after tests are finished.
import { faker } from '@faker-js/faker'
import { APIClient } from './src/api-client'
import { User } from './src/data-helpers/types'
export async function createRandomUser(apiClient: APIClient, role: string): Promise<User> {
const user: User = {
userId: faker.string.uuid(),
username: faker.internet.username(),
email: faker.internet.email(),
avatar: faker.image.avatar(),
password: faker.internet.password(),
birthdate: faker.date.birthdate(),
registeredAt: faker.date.past(),
role,
};
// Insert user into database by using API of your app
await apiClient.createUser(user)
return user
}
import { Fixtures, TestFixtures, WorkerFixtures } from 'inspecter/core'
import { APIClient } from './src/api-client'
import { User, createRandomUser } from './src/data-helpers'
export interface E2ETestFixtures extends TestFixtures, WorkerFixtures {
}
export interface E2EWorkerFixtures extends WorkerFixtures {
apiClient: APIClient
adminUser: string
}
export const fixtures: Fixtures<E2ETestFixtures, E2EWorkerFixtures> = {
apiClient: [
async ({}, use) => {
const client = new APIClient()
await use(client)
},
{ scope: 'worker' },
],
adminUser: [
async ({ apiClient }, use) => {
const user = await createRandomUser(apiClient, 'admin')
await use(user)
// Cleanup database after tests are finished
await apiClient.deleteUser(user.userId)
},
{ scope: 'worker' },
],
}