test-exact-url.js•9.23 kB
#!/usr/bin/env node
/**
* Direct URL Access Test - Test exact user URL with minimal automation interference
*/
import { chromium } from 'playwright';
async function testExactURL() {
console.log('🔍 Testing Direct Access to User\'s Exact URL');
// User's exact working URL
const exactURL = 'https://composer.euconquisto.com/#/embed/auth-with-token/pt_br/home/36c92686-c494-ec11-a22a-dc984041c95d/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImFkbWluLmRlc2Vudm9sdmltZW50b0BldWNvbnF1aXN0by5jb20iLCJuYW1lIjoiQWRtaW4gRGV2Iiwib2lkIjoiNWZiM2RlYzYtYzQ5NC1lYzExLWEyMmEtZGM5ODQwNDFjOTVkIiwiZGlyZWN0b3J5IjoiYjBmZWY4NjAtYzQ5NC1lYzExLWEyMmEtZGM5ODQwNDFjOTVkIiwiYXBpbSI6IkVFQzUzQTI0LUVDMEUtNDFCOS05NDA1LTg2QTE3NTAwREIzNCIsImRpcm4iOiJEZXNlbnZvbHZpbWVudG8iLCJyb2xlIjpbIlJldmlld0NvbnRyaWJ1dG9yIiwiQ29udHJpYnV0b3JHbG9iYWwiLCJBZG1pbmlzdHJhdG9yR2xvYmFsIl0sImRjbiI6WyJINHNJQUFBQUFBQUFBMkptWUdBd1pRQ0JaQXVqRkdNREM0dFYyMXRTRS1vZHA5NElpMnVVYTNqMXNxRXl6YWhrN3ZxWlN5MG5sLV94c3cyb0xEN05jT2ppRThWelhyZDBEamF3XzQyVW1fZmxrT1loZzlVN0ZKOGx5N1dWQVFBQUFQX18iLCJINHNJQUFBQUFBQUFBMkptWUdBd1pRQ0JaQXVqRkdNREM0c2xCWS0zTjB5WkU1S1NNSFhKTzhjcm0wNS1remgtYVBzTXhtMnZvOTBxYzhXTjktX08wRzRMbmo5dDRqb2R4bnZNdVkycHJEd1NrYlkyamJOMnpuNXJvemJmR3dBQUFQX18iLCJINHNJQUFBQUFBQUFBMkptWUdBd1pRQ0JaQXVqRkdNREM0dnpkMWU1SDFGTzVhenRyR1RuZXZ6emx0U0djM3VFT1IteHExWXZNVHF5NGstaThXR0gwd292cC1ka3FjNm82d2xSZkM0d3k5MVcxSHFqOFU4aEMtRWZMa0pSQUFBQUFQX18iLCJINHNJQUFBQUFBQUFBMkptWUdBd1pRQ0JaQXVqRkdNREM0dU5XMnUyS3A5dXZhUGhkOFNpOE9KNV8yTmRmZnNTSC0temZHTXVmX084Wm5GbXFXRE5qeE1ubnBWelRkVTBPVF9mUldtNVVhTkxlV2oyTjY5Y3JRS0x1SmJQQUFBQUFQX18iLCJINHNJQUFBQUFBQUFBMkptWUdBd1pRQ0JaQXVqRkdNREM0czY2NE5odVhwck52S3FiV1RuUEtGNTU2UzRycXdXNDJ1SnkzbjNGVkxFVjZ4VlljdU9kTnVrZXliMjdKbjRlOS1GaGNNdW1iOTZ1cUx0aEptSDJrX0h0U29MQUFBQUFQX18iLCJINHNJQUFBQUFBQUFBMkptWUdBd1pRQ0JaQXVqRkdNREx3dWpCWjhyQW81RUxEaHRvQ2ZUdmVQcTVET2hpd1dtM3A2eFktTDdIYkpTb2RFU2I2SUVWQ3BQcXpETTJ2WlR6VzlsMXBrWlBFb3Zkbl8tV3R2LWY0bkt3dmEtU0FBQUFBRF9fdyJdLCJzY3AiOlsiSDRzSUFBQUFBQUFBQTJKbVlHRHdZQUFCMDZRMDA5VFU1RlNKTmZzV1NKNDRWWGZBeHZYeDVEc3lzaFhPNmllVGk0cWVYbTZaVVN2QzZ2djNST0hNRDBkVHBDVHUzekFfVUMtWVVIOHIyMzNlS29mQ0hZR3UwWG83aWswWGROWVVxdmotV0hfclhiU3VVYnJZM1VZQUFBQUFfXzgiLCJINHNJQUFBQUFBQUFBd0RTQWkzOUF3QUFBck1BQUFBQUFHRTVaalF6TkRsa2E0TWozbjdQejY0dmpPSWl5LVlNb3dhRDdlMWpqcDZJakE2SVFZMi14TFNOTWFSZWNrTTdzWEJKamR2SkpoeUF5TnZJVHQ5aUFFWHcybVVzM3lIbGc2UHNtSld1Mm1EU2UwbXlrYnQ0OGl1NTlkYTIxMVBNdkxyRzdxOV9teDlhYWI0SjdZbWlNODg2OTVUclk3WFY1Nmlsb3UwdnQ4VmdBMWptbkdYd0paa0ZDTXhYaUlhcGl5S01TVGlfa3BnREdQdlRlYUNNdE5GSXlIU0gwUTZ3bTFwRkJBYzRMQ1dqRThMeWtnc1ZtbEJxRG9aek1oZTVnY21sZHl0VW1FVFltakIyakVaUHdvd0M2NFRZb1JudDJOWkpmRDdDZXg1T3FqY1ptVU5tNjMtVlRYOFh0UEtza1BpSnpIb3kzcHF5dXVycnVrTndZenducHpwak51OEdKZXQ4V2RoMl85ckNoVnpPUnR4N1N5UXEyb2prUmJfWEphenFtTnEwMEVTcTNSZUVSX0pQZmhGOGg4bGlxcGVWeE1FSG5RUGFmMXp2N3FVQ3JzTWtrVjc1TmxnRGVUZ1YvWGVyX0Rud3FkektCOFdtY1p0OXFjMXZpU0ROV1JHZVN0bHc3d250UzFSSXlBN205cS01YU9FLUx0ODB3bE1HTkxOTi1TVFN3OWVDN2dxVmQtSUZZWlhYQ2NZcWNfcWc1dDhodFdSLVJ2cUJsX3Fjbkt2N2xhaHk5elRTaHJfX1BTRWJqdTg0SkhDV3I5SXhGd2lzYVd1eVZiMUp0ZUQzcDk0WnpWZDhnTEJQRGFRVUJMZHc1SVEzWkJIc3daTXExRjJqVGdEcF92RDJLQzZzVnd1dVhaa3RzYWlrc3pMZW5NcTFUVjRUMmF5QUdyVHB3UlUzMFMwc3hfQ3pCRVlLREV0b2s4eDI5TGlnUnlHMnVfZDVpOHRyVEJ1WTNjVFdzSXVIdzRibXNVV1lkTXNwblRMMXpwNE1LWUFBQURfX3ciXSwibmJmIjoxNzQ4ODc2OTU1LCJleHAiOjE3NTE0Njg5NTUsImlhdCI6MTc0ODg3Njk1NSwiaXNzIjoiaHR0cHM6Ly9hcGkuZGlnaXRhbHBhZ2VzLmNvbS5iciIsImF1ZCI6IkV1Q29ucXVpc3RvIn0.iTUfl6-mwLwFaxYYPf6PufRSYbSJlw3tKejmbc5G42g';
let browser, page;
try {
console.log('1️⃣ Launching browser with normal user-like configuration...');
// Use a more normal browser configuration
browser = await chromium.launch({
headless: false,
args: [
'--no-sandbox',
'--disable-dev-shm-usage',
'--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
]
});
const context = await browser.newContext({
viewport: { width: 1280, height: 720 }
});
page = await context.newPage();
// Set reasonable timeouts
page.setDefaultTimeout(30000);
page.setDefaultNavigationTimeout(60000);
// Log page events for debugging
page.on('console', msg => console.log(`PAGE: ${msg.text()}`));
page.on('pageerror', error => console.error(`PAGE ERROR: ${error.message}`));
page.on('response', response => {
if (!response.ok() && response.status() !== 404) {
console.log(`HTTP ${response.status()}: ${response.url()}`);
}
});
console.log('2️⃣ Navigating to exact user URL...');
console.log(`URL: ${exactURL.substring(0, 100)}...`);
const response = await page.goto(exactURL, {
waitUntil: 'domcontentloaded',
timeout: 60000
});
if (!response || !response.ok()) {
console.error(`❌ Navigation failed with status: ${response?.status()}`);
return;
}
console.log('✅ Page loaded successfully');
// Wait a bit for JavaScript to initialize
console.log('3️⃣ Waiting for application to initialize...');
await page.waitForTimeout(10000); // Give it 10 seconds
// Check what we have on the page
const content = await page.evaluate(() => {
const body = document.body;
const hasButtons = document.querySelectorAll('button').length;
const hasComposerContent = body.textContent?.includes('Nova') || body.textContent?.includes('Composição') || body.textContent?.includes('Composer');
const hasSignificantContent = body.textContent && body.textContent.length > 100;
const hasReactApp = document.querySelector('[data-reactroot]') || document.querySelector('#root') || document.querySelector('.app');
return {
bodyTextLength: body.textContent?.length || 0,
buttonCount: hasButtons,
hasComposerContent,
hasSignificantContent,
hasReactApp: !!hasReactApp,
title: document.title,
bodyClasses: body.className,
firstButtonText: document.querySelector('button')?.textContent || 'No buttons found'
};
});
console.log('4️⃣ Page content analysis:');
console.log(' - Page title:', content.title);
console.log(' - Body text length:', content.bodyTextLength);
console.log(' - Button count:', content.buttonCount);
console.log(' - Has Composer content:', content.hasComposerContent);
console.log(' - Has significant content:', content.hasSignificantContent);
console.log(' - Has React app:', content.hasReactApp);
console.log(' - Body classes:', content.bodyClasses);
console.log(' - First button text:', content.firstButtonText);
// Take a screenshot to see the actual state
const timestamp = Date.now();
await page.screenshot({
path: `direct-access-test-${timestamp}.png`,
fullPage: true
});
console.log(`📸 Screenshot saved: direct-access-test-${timestamp}.png`);
// Look specifically for "NOVA COMPOSIÇÃO" button
const novaButton = await page.locator('text=NOVA COMPOSIÇÃO').first();
const novaButtonExists = await novaButton.count() > 0;
console.log('5️⃣ "NOVA COMPOSIÇÃO" button check:', novaButtonExists ? '✅ Found' : '❌ Not found');
if (novaButtonExists) {
console.log('🎉 SUCCESS: Composer page loaded with "NOVA COMPOSIÇÃO" button visible!');
} else {
console.log('⚠️ ISSUE: Page loaded but "NOVA COMPOSIÇÃO" button not visible');
// Check for any buttons that might be the new composition button
const allButtons = await page.locator('button').all();
console.log(' Available buttons:');
for (let i = 0; i < Math.min(allButtons.length, 5); i++) {
const text = await allButtons[i].textContent();
console.log(` - Button ${i + 1}: "${text}"`);
}
}
} catch (error) {
console.error('❌ Test failed:', error.message);
// Take error screenshot if page exists
if (page) {
try {
await page.screenshot({
path: `direct-access-error-${Date.now()}.png`,
fullPage: true
});
console.log('📸 Error screenshot saved');
} catch (screenshotError) {
console.error('Could not take error screenshot:', screenshotError.message);
}
}
} finally {
if (browser) {
await browser.close();
console.log('🔒 Browser closed');
}
}
}
// Run the test
testExactURL().catch(console.error);