Files
uberwald 5dc9b3b8d4
CI / ci (push) Failing after 7s
Module cleanup and tests
2026-05-24 23:13:45 +02:00

152 lines
4.2 KiB
JavaScript

/**
* Setup simplifié pour FoundryVTT E2E Tests
*
* Environnement existant :
* - Serveur FoundryVTT sur https://localhost:31000
* - Monde déjà disponible
* - Utilisateur: gamemaster (pas de mot de passe)
* - Module Scrying Pool déjà installé
*
* Ce setup vérifie simplement que tout est accessible.
*/
import { chromium } from '@playwright/test';
const FOUNDRY_URL = 'https://localhost:31000';
const TEST_USER = 'gamemaster';
/**
* Vérifie que FoundryVTT est accessible
*/
async function verifyFoundryAccessible(page) {
console.log('🔍 Vérification de l\'accès à FoundryVTT...');
try {
await page.goto(FOUNDRY_URL, {
timeout: 30000,
waitUntil: 'domcontentloaded',
});
// Attendre un élément Foundry (le body devrait exister)
await page.waitForSelector('body', { timeout: 10000 });
console.log('✅ FoundryVTT est accessible sur https://localhost:31000');
// Vérifier que le module est chargé (en mode GM)
const title = await page.title();
console.log(`📖 Titre de la page: ${title}`);
} catch (error) {
console.error('❌ Impossible de se connecter à FoundryVTT:', error.message);
console.error('💡 Vérifiez que:');
console.error(' - FoundryVTT est en cours d\'exécution sur https://localhost:31000');
console.error(' - Le monde est accessible');
console.error(' - Le module Scrying Pool est installé');
throw error;
}
}
/**
* Vérifie que le module Scrying Pool est actif
*/
async function verifyModuleActive(page) {
console.log('📦 Vérification du module Scrying Pool...');
try {
// Attendre que le module soit initialisé (check pour un élément spécifique)
await page.waitForFunction(() => {
return typeof game !== 'undefined' &&
game.modules?.get?.('scrying-pool')?.active;
}, { timeout: 15000 });
const isActive = await page.evaluate(() => {
const module = game.modules.get('scrying-pool');
return module?.active || false;
});
if (isActive) {
console.log('✅ Module Scrying Pool est actif');
} else {
console.warn('⚠️ Module Scrying Pool n\'est pas actif');
console.warn(' Essayez de recharger la page (Ctrl+R)');
}
} catch (error) {
console.warn('⚠️ Impossible de vérifier l\'état du module:', error.message);
}
}
/**
* Vérifie que l'utilisateur est GM
*/
async function verifyIsGM(page) {
console.log('👑 Vérification du rôle GM...');
try {
const isGM = await page.evaluate(() => {
return game.user?.isGM || false;
});
if (isGM) {
console.log('✅ Utilisateur est GM (gamemaster)');
} else {
console.warn('⚠️ Utilisateur n\'est pas GM');
}
} catch (error) {
console.warn('⚠️ Impossible de vérifier le rôle:', error.message);
}
}
/**
* Exécute le setup
*/
async function globalSetup() {
console.log('\n🚀 Démarrage du setup E2E pour FoundryVTT...\n');
console.log('Configuration détectée:');
console.log(' - URL: https://localhost:31000');
console.log(' - User: gamemaster');
console.log(' - Monde: déjà disponible\n');
const browser = await chromium.launch({
headless: true,
timeout: 30000,
ignoreHTTPSErrors: true,
});
const context = await browser.newContext({
viewport: { width: 1920, height: 1080 },
userAgent: 'VVM-E2E-Setup/1.0',
ignoreHTTPSErrors: true,
});
const page = await context.newPage();
try {
// Vérifier l'accès à Foundry
await verifyFoundryAccessible(page);
// Vérifier que le module est actif
await verifyModuleActive(page);
// Vérifier le rôle GM
await verifyIsGM(page);
console.log('\n✅ Setup E2E terminé avec succès !\n');
console.log('Prêt à exécuter les tests sur:');
console.log(` ${FOUNDRY_URL}\n`);
// Stocker des informations pour les tests
process.env.FOUNDRY_URL = FOUNDRY_URL;
process.env.FOUNDRY_USER = TEST_USER;
} catch (error) {
console.error('\n❌ Setup échoué:', error);
throw error;
} finally {
await page.close();
await context.close();
await browser.close();
}
}
export default globalSetup;