Cloudflare DevelopersCD
Cloudflare Developers3y ago
28 replies
stibbs

Applying D1 migrations in tests

I don't know how to get this working.
import { Miniflare } from 'miniflare';
import { afterAll, beforeAll, describe } from 'vitest';
import { spawn } from 'child_process';

describe('App entry', () => {
  beforeAll(() => {
    const mf = new Miniflare({
      modules: true,
      scriptPath: './dist/index.js',
      d1Databases: ['DB'],
      d1Persist: '.wrangler/state/v3/d1'
  });
  const migrationProcess = spawn('pnpm', ['wrangler', 'd1', 'migrations', 'apply', 'snow-db', '--local'], {
    shell: true,
    stdio: 'inherit'
  });

  await new Promise<void>((resolve, reject) => {
    migrationProcess.on('close', (code) => {
      if (code === 0) {
        console.log('Migrations completed successfully');
        resolve();
      } else {
        reject(`Migrations process exited with code ${code}`);
      }
    });
  });
  afterAll(() => mf.dispose());

  // test here
});
Was this page helpful?