Call to clearFirestoreData in the beforeEach of a test suite. Each call will take longer.
As this relies on the Firestore emulator I can't run it in an online editor. Here's the code I'm using in Jest to mock firebase-admin with @firebase/testing (__mocks__/firebase-admin.ts):
/* tslint:disable:no-var-requires */
const firebase = require('@firebase/testing')
const projectId = `myapp-${process.pid}`
beforeEach(async () => {
console.time('clearFirestoreData') // tslint:disable-line
await firebase.clearFirestoreData({
projectId,
})
console.timeEnd('clearFirestoreData') // tslint:disable-line
})
afterAll(async () => {
const apps = firebase.apps()
await Promise.all(
apps.map(async (a: any) => {
await a.delete()
}),
)
})
export default {
__esModule: true,
firestore: firebase.firestore,
initializeApp() {
const app = firebase.initializeAdminApp({
projectId,
})
return {
auth() {
return {
createUser: jest.fn(),
getUser: jest.fn(),
getUserByEmail: jest.fn(),
listUsers: jest.fn(),
setCustomUserClaims: jest.fn(),
updateUser: jest.fn(),
}
},
firestore() {
return app.firestore()
},
}
},
}
Results in the following:
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 31ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 9ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 39ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 36ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 66ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 59ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 100ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 91ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 144ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 141ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 175ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 189ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 218ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 198ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 231ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 234ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 232ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 231ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 245ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 240ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 255ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 260ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 300ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 309ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 310ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 317ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 343ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 331ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 356ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 339ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 342ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 370ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 391ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 410ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 380ms
console.time specs/__mocks__/firebase-admin.js:16
clearFirestoreData: 419ms
cc @ryanpbrewster
@damonmaria thanks for posting this! Very interesting, feels like it's probably a bug in the emulator itself.
Nice report, replicated this locally and have a fix. Should go out with the next release.
Thanks for filing this issue! :)
This should be fixed as of the latest release, please re-open this issue if you run into it again :)
OMG, my test suite now runs in half the time.
Thanks!