fix: add PrismaPg adapter for PostgreSQL and fix GRANT statements
This commit is contained in:
+11
-5
@@ -8,6 +8,7 @@
|
||||
|
||||
import { type FullConfig } from '@playwright/test';
|
||||
import { PrismaClient } from '@prisma/client';
|
||||
import { PrismaPg } from '@prisma/adapter-pg';
|
||||
import { execSync } from 'child_process';
|
||||
|
||||
const TEST_PATTERNS = {
|
||||
@@ -61,6 +62,13 @@ function buildEmailLikeClause(patterns: string[]): string {
|
||||
return patterns.map(p => `email LIKE '${p}'`).join(' OR ');
|
||||
}
|
||||
|
||||
function createPrismaClient() {
|
||||
const databaseUrl = process.env.DATABASE_URL;
|
||||
if (!databaseUrl) throw new Error('DATABASE_URL is required');
|
||||
const adapter = new PrismaPg({ connectionString: databaseUrl });
|
||||
return new PrismaClient({ adapter });
|
||||
}
|
||||
|
||||
async function resetDatabaseSchema(prisma: PrismaClient) {
|
||||
console.log('Resetting database schema...');
|
||||
|
||||
@@ -73,8 +81,6 @@ async function resetDatabaseSchema(prisma: PrismaClient) {
|
||||
await prisma.$executeRawUnsafe(`
|
||||
DROP SCHEMA public CASCADE;
|
||||
CREATE SCHEMA public;
|
||||
GRANT ALL ON SCHEMA public TO postgres;
|
||||
GRANT ALL ON SCHEMA public TO public;
|
||||
`);
|
||||
console.log(`Dropped ${tables.length} tables`);
|
||||
}
|
||||
@@ -109,16 +115,16 @@ export default async function globalTeardown(config: FullConfig) {
|
||||
|
||||
if (isCIDatabase()) {
|
||||
console.log('CI environment - resetting database schema');
|
||||
const prisma = new PrismaClient();
|
||||
const prisma = createPrismaClient();
|
||||
await resetDatabaseSchema(prisma);
|
||||
await prisma.$disconnect();
|
||||
} else if (isProductionDatabase()) {
|
||||
console.log('Production environment - selective cleanup of test records');
|
||||
const prisma = new PrismaClient();
|
||||
const prisma = createPrismaClient();
|
||||
await cleanupTestRecords(prisma);
|
||||
} else {
|
||||
console.log('Development environment - selective cleanup of test records');
|
||||
const prisma = new PrismaClient();
|
||||
const prisma = createPrismaClient();
|
||||
await cleanupTestRecords(prisma);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user