Skip to main content
Glama
test-simple-creation.js4.51 kB
#!/usr/bin/env node /** * Simplified test of composition creation */ import playwright from 'playwright'; import { readFileSync } from 'fs'; import { resolve, dirname } from 'path'; import { fileURLToPath } from 'url'; const currentDir = dirname(fileURLToPath(import.meta.url)); async function testCompositionCreation() { console.log('🚀 Testing Composition Creation...\n'); try { // Load JWT token const tokenPath = resolve(currentDir, 'correct-jwt-new.txt'); const jwtToken = readFileSync(tokenPath, 'utf8').trim(); console.log('✅ JWT token loaded'); // Launch browser const browser = await playwright.chromium.launch({ headless: false, slowMo: 200, timeout: 120000, args: ['--no-sandbox', '--disable-setuid-sandbox'], }); const page = await browser.newPage(); // Navigate to Composer const baseURL = 'https://composer.euconquisto.com/#/embed'; const orgId = '36c92686-c494-ec11-a22a-dc984041c95d'; const embedURL = `${baseURL}/auth-with-token/pt_br/home/${orgId}/${jwtToken}`; console.log('🌐 Navigating to Composer...'); await page.goto(embedURL, { waitUntil: 'networkidle' }); // Wait for page to load await page.waitForTimeout(3000); console.log('✅ Page loaded'); // Click "Nova Composição" console.log('🔘 Clicking "Nova Composição" button...'); await page.click('button:has-text("Nova Composição")'); await page.waitForTimeout(2000); // Create simple composition data const compositionData = { version: '1.1', metadata: { title: 'Test Composition from MCP', description: 'Created via browser automation', thumb: null, tags: [], }, interface: { content_language: 'pt_br', index_option: 'buttons', font_family: 'Lato', show_summary: 'disabled', finish_btn: 'disabled', }, structure: [ { id: `header-${Date.now()}`, type: 'head-1', content_title: null, primary_color: '#FFFFFF', secondary_color: '#aa2c23', category: '<p>Welcome to My Site</p>', background_image: 'https://pocs.digitalpages.com.br/rdpcomposer/media/head-1/background.png', avatar: 'https://pocs.digitalpages.com.br/rdpcomposer/media/head-1/avatar.png', avatar_border_color: '#00643e', author_name: '<p>MCP Server</p>', author_office: '<p>Automated Creation</p>', show_category: true, show_author_name: true, show_divider: true, }, { id: `text-${Date.now()}`, type: 'text-1', content: '<p>This composition was created automatically using the MCP browser automation system. It demonstrates the ability to create compositions programmatically from natural language prompts.</p>', }, ], assets: [], }; console.log('💾 Setting composition data in localStorage...'); await page.evaluate((data) => { localStorage.setItem('rdp-composer-data', JSON.stringify(data)); console.log('LocalStorage updated with composition data'); }, compositionData); // Try to save console.log('💾 Attempting to save composition...'); try { await page.click('button:has-text("Salvar")'); await page.waitForTimeout(5000); const currentURL = await page.url(); console.log('✅ Composition saved!'); console.log('🔗 URL:', currentURL); // Extract composition data from URL to verify if (currentURL.includes('/composer/')) { console.log('✅ URL contains composition data - creation successful!'); } } catch (saveError) { console.log('⚠️ Save button not found or save failed:', saveError.message); // Check current state const currentData = await page.evaluate(() => { const data = localStorage.getItem('rdp-composer-data'); return data ? 'Data exists in localStorage' : 'No data in localStorage'; }); console.log('📊 Current state:', currentData); } console.log('\n⏰ Keeping browser open for 30 seconds for manual inspection...'); await page.waitForTimeout(30000); await browser.close(); console.log('✅ Test completed successfully!'); } catch (error) { console.error('❌ Test failed:', error.message); console.error(error.stack); } } testCompositionCreation();

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/rkm097git/euconquisto-composer-mcp-poc'

If you have feedback or need assistance with the MCP directory API, please join our Discord server