test-simple-creation.js•4.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();