20d13fc678
- Remove unused StripOverlayLayer import and stripOverlayLayer variable from module.js - Add comprehensive JSDoc annotations to FoundryAdapter.js methods (settings, socket, users, scenes, notifications, hooks) - Add /* global Dialog */ comment to PlayerPrivacyPanel.js for ESLint - Remove unused _force parameter from GMPlayerPrivacySelector.js render() method - Fix PlayerPrivacyPanelMenu.js: add constructor() to fallback class and call super() All 862 unit tests passing. All Story 4.2 acceptance criteria met. Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
152 lines
4.2 KiB
JavaScript
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 Video View Manager 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 Video View Manager est installé');
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Vérifie que le module Video View Manager est actif
|
|
*/
|
|
async function verifyModuleActive(page) {
|
|
console.log('📦 Vérification du module Video View Manager...');
|
|
|
|
try {
|
|
// Attendre que le module soit initialisé (check pour un élément spécifique)
|
|
await page.waitForFunction(() => {
|
|
return typeof game !== 'undefined' &&
|
|
game.modules?.get?.('video-view-manager')?.active;
|
|
}, { timeout: 15000 });
|
|
|
|
const isActive = await page.evaluate(() => {
|
|
const module = game.modules.get('video-view-manager');
|
|
return module?.active || false;
|
|
});
|
|
|
|
if (isActive) {
|
|
console.log('✅ Module Video View Manager est actif');
|
|
} else {
|
|
console.warn('⚠️ Module Video View Manager 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;
|