Skip to main content
Glama
test-navigation-strategies.js9.13 kB
#!/usr/bin/env node /** * Navigation Strategies Test - Different ways to handle page loading */ import { chromium } from 'playwright'; async function testNavigationStrategies() { console.log('🔄 Testing different navigation strategies...'); const token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImFkbWluLmRlc2Vudm9sdmltZW50b0BldWNvbnF1aXN0by5jb20iLCJuYW1lIjoiQWRtaW4gRGV2Iiwib2lkIjoiNWZiM2RlYzYtYzQ5NC1lYzExLWEyMmEtZGM5ODQwNDFjOTVkIiwiZGlyZWN0b3J5IjoiYjBmZWY4NjAtYzQ5NC1lYzExLWEyMmEtZGM5ODQwNDFjOTVkIiwiYXBpbSI6IkVFQzUzQTI0LUVDMEUtNDFCOS05NDA1LTg2QTE3NTAwREIzNCIsImRpcm4iOiJEZXNlbnZvbHZpbWVudG8iLCJyb2xlIjpbIlJldmlld0NvbnRyaWJ1dG9yIiwiQ29udHJpYnV0b3JHbG9iYWwiLCJBZG1pbmlzdHJhdG9yR2xvYmFsIl0sImRjbiI6WyJINHNJQUFBQUFBQUFBMkptWUdBd1pRQ0JaQXVqRkdNREM0dFYyMXRTRS1vZHA5NElpMnVVYTNqMXNxRXl6YWhrN3ZxWlN5MG5sLV94c3cyb0xEN05jT2ppRThWelhyZDBEamF3XzQyVW1fZmxrT1loZzlVN0ZKOGx5N1dWQVFBQUFQX18iLCJINHNJQUFBQUFBQUFBMkptWUdBd1pRQ0JaQXVqRkdNREM0c2xCWS0zTjB5WkU1S1NNSFhKTzhjcm0wNS1remgtYVBzTXhtMnZvOTBxYzhXTjktX08wRzRMbmo5dDRqb2R4bnZNdVkycHJEd1NrYlkyamJOMnpuNXJvemJmR3dBQUFQX18iLCJINHNJQUFBQUFBQUFBMkptWUdBd1pRQ0JaQXVqRkdNREM0dnpkMWU1SDFGTzVhenRyR1RuZXZ6emx0U0djM3VFT1IteHExWXZNVHF5NEstaThXR0gwd292cC1ka3FjNm82d2xSZkM0d3k5MVcxSHFqOFU4aEMtRWZMa0pSQUFBQUFQX18iLCJINHNJQUFBQUFBQUFBMkptWUdBd1pRQ0JaQXVqRkdNREM0dU5XMnUyS3A5dXZhUGhkOFNpOE9KNV8yTmRmZnNTSC0temZHTXVmX084Wm5GbXFXRE5qeE1ubnBWelRkVTBPVF9mUldtNVVhTkxlV2oyTjY5Y3JRS0x1SmJQQUFBQUFQX18iLCJINHNJQUFBQUFBQUFBMkptWUdBd1pRQ0JaQXVqRkdNREM0czY2NE5odVhwck52S3FiV1RuUEtGNTU2UzRycXdXNDJ1SnkzbjNGVkxFVjZ4VlljdU9kTnVrZXliMjdKbjRlOS1GaGNNdW1iOTZ1cUx0aEptSDJrX0h0U29MQUFBQUFQX18iLCJINHNJQUFBQUFBQUFBMkptWUdBd1pRQ0JaQXVqRkdNREN3dWpCWjhyQW81RUxEaHRvQ2ZUdmVQcTVET2hpd1dtM3A2eFktTDdIYkpTb2RFU2I2SUVWQ3BQcXpETTJ2WlR6VzlsMXBrWlBFb3Zkbl8tV3R2LWY0bkt3dmEtU0FBQUFBRF9fdyJdLCJzY3AiOlsiSDRzSUFBQUFBQUFBQTJKbVlHRHdZQUFCMDZRMDA5VFU1RlNKTmZzV1NKNDRWWGZBeHZYeDVEc3lzaFhPNmllVGk0cWVYbTZaVVN2QzZ2djNST0hNRDBkVHBDVHUzekFfVUMtWVVIOHIyMzNlS29mQ0hZR3UwWG83aWswWGROWVVxdmotV0hfclhiU3VVYnJZM1VZQUFBQUFfXzgiLCJINHNJQUFBQUFBQUFBd0RTQWkzOUF3QUFBck1BQUFBQUFHRTVaalF6TkRsa2E0TWozbjdQejY0dmpPSWl5LVlNb3dhRDdlMWpqcDZJakE2SVFZMi14TFNOTWFSZWNrTTdzWEJKamR2SkpoeUF5TnZJVHQ5aUFFWHcybVVzM3lIbGc2UHNtSld1Mm1EU2UwbXlrYnQ0OGl1NTlkYTIxMVBNdkxyRzdxOV9teDlhYWI0SjdZbWlNODg2OTVUclk3WFY1Nmlsb3UwdnQ4VmdBMWptbkdYd0paa0ZDTXhYaUlhcGl5S01TVGlfa3BnREdQdlRlYUNNdE5GSXlIU0gwUTZ3bTFwRkJBYzRMQ1dqRThMeWtnc1ZtbEJxRG9aek1oZTVnY21sZHl0VW1FVFltakIyakVaUHdvd0M2NFRZb1JudDJOWkpmRDdDZXg1T3FqY1ptVU5tNjMtVlRYOFh0UEtza1BpSnpIb3kzcHF5dXVycnVrTndZenducHpwak51OEdKZXQ4V2RoMl85ckNoVnpPUnR4N1N5UXEyb2prUmJfWEphenFtTnEwMEVTcTNSZUVSX0pQZmhGOGg4bGlxcGVWeE1FSG5RUGFmMXp2N3FVQ3JzTWtrVjd3NU5sOURWYU9DMnNLV2Q1TDdBNDYxUlFRSjVUNU5MMGQ2UGZqVWV4dkZTR0RQdW5jcHAxeDA0TlBOM2ttTmdMSlF3eDZLZjRxLVBZbDVXWmFQUTlXU0NLNHBmeHY3ZTJRZEw0X1IwQ1c3NUdQRHh1bEZQZG1tcmRrc0k2RVhqUTFkQTdkZlNFUnJoZHdvOUhCN0xGMzRYSENnMWg3Z2I4UWVKdmhMTXRjUmtlUzVpQkctOGNfNkdCQU9YUDdQR2ptQ1NUZzV2WGVyX0Rud3FkektCOFdtY1p0OXFjMXZpU0ROV1JHZVN0bHc3d250UzFSSXlBN205cS01YU9FLUx0ODB3bE1HTkxOTi1TVFN3OWVDN2dxVmQtSUZZWlhYQ2NZcWNfcWc1dDhodFdSLVJ2cUJsX3Fjbkt2N2xhaHk5elRTaHJfX1BTRWJqdTg0SkhDV3I5SXhGd2lzYVd1eVZiMUp0ZUQzcDk0WnpWZDhnTEJQRGFRVUJMZHc1SVEzWkJIc3daTXExRjJqVGdEcF92RDJLQzZzVnd1dVhaa3RzYWlrc3pMZW5NcTFUVjRUMmF5QUdyVHB3UlUzMFMwc3hfQ3pCRVlLREV0b2s4eDI5TGlnUnlHMnVfZDVpOHRyVEJ1WTNjVFdzSXVIdzRibXNVV1lkTXNwblRMMXpwNE1LWUFBQURfX3ciXSwibmJmIjoxNzQ4ODc2OTU1LCJleHAiOjE3NTE0Njg5NTUsImlhdCI6MTc0ODg3Njk1NSwiaXNzIjoiaHR0cHM6Ly9hcGkuZGlnaXRhbHBhZ2VzLmNvbS5iciIsImF1ZCI6IkV1Q29ucXVpc3RvIn0.iTUfl6-mwLwFaxYYPf6PufRSYbSJlw3tKejmbc5G42g"; const url = `https://composer.euconquisto.com/#/embed/auth-with-token/pt_br/home/36c92686-c494-ec11-a22a-dc984041c95d/${token}`; let browser, page; try { console.log('1️⃣ Launching browser...'); browser = await chromium.launch({ headless: false, args: [ '--no-sandbox', '--disable-dev-shm-usage' ] }); const context = await browser.newContext({ viewport: { width: 1280, height: 720 } }); page = await context.newPage(); console.log('2️⃣ Testing Strategy 1: Basic navigation with load event...'); await page.goto(url, { waitUntil: 'load', timeout: 30000 }); console.log(' ✅ Navigation complete (load)'); await page.waitForTimeout(3000); let buttonCount = await page.locator('button').count(); console.log(` - Buttons found: ${buttonCount}`); if (buttonCount === 0) { console.log('3️⃣ Strategy 2: Reload and wait for networkidle...'); await page.reload({ waitUntil: 'networkidle', timeout: 30000 }); console.log(' ✅ Page reloaded (networkidle)'); await page.waitForTimeout(5000); buttonCount = await page.locator('button').count(); console.log(` - Buttons found after reload: ${buttonCount}`); } if (buttonCount === 0) { console.log('4️⃣ Strategy 3: Manual page refresh via JavaScript...'); await page.evaluate(() => window.location.reload()); await page.waitForLoadState('domcontentloaded'); await page.waitForTimeout(5000); buttonCount = await page.locator('button').count(); console.log(` - Buttons found after JS reload: ${buttonCount}`); } if (buttonCount === 0) { console.log('5️⃣ Strategy 4: Navigate to base URL first, then to token URL...'); await page.goto('https://composer.euconquisto.com/', { waitUntil: 'load' }); console.log(' ✅ Navigated to base URL'); await page.waitForTimeout(2000); await page.goto(url, { waitUntil: 'networkidle', timeout: 30000 }); console.log(' ✅ Navigated to token URL'); await page.waitForTimeout(5000); buttonCount = await page.locator('button').count(); console.log(` - Buttons found after base→token navigation: ${buttonCount}`); } if (buttonCount === 0) { console.log('6️⃣ Strategy 5: Set URL via location.href...'); await page.evaluate((targetUrl) => { window.location.href = targetUrl; }, url); await page.waitForLoadState('domcontentloaded'); await page.waitForTimeout(8000); buttonCount = await page.locator('button').count(); console.log(` - Buttons found after location.href: ${buttonCount}`); } // Final analysis const analysis = await page.evaluate(() => { const body = document.body; const buttons = document.querySelectorAll('button'); return { title: document.title, url: window.location.href, bodyText: body.textContent?.slice(0, 300) || '', buttonCount: buttons.length, hasAngularApp: !!document.querySelector('[ng-app]') || !!window.angular, hasReactApp: !!document.querySelector('[data-reactroot]') || !!window.React, hasVueApp: !!document.querySelector('[data-v-]') || !!window.Vue, bodyHTML: body.innerHTML.slice(0, 500) }; }); console.log('📊 Final Analysis:'); console.log(` - Title: ${analysis.title}`); console.log(` - Current URL: ${analysis.url}`); console.log(` - Buttons: ${analysis.buttonCount}`); console.log(` - Framework: Angular=${analysis.hasAngularApp}, React=${analysis.hasReactApp}, Vue=${analysis.hasVueApp}`); console.log(` - Body text preview: ${analysis.bodyText}`); console.log(` - Body HTML preview: ${analysis.bodyHTML}`); // Check for NOVA COMPOSIÇÃO specifically const novaButton = await page.locator('text=NOVA COMPOSIÇÃO').count(); console.log(` - NOVA COMPOSIÇÃO found: ${novaButton > 0 ? '✅ YES' : '❌ NO'}`); // Screenshot const timestamp = Date.now(); await page.screenshot({ path: `navigation-strategies-${timestamp}.png`, fullPage: true }); console.log(`📸 Screenshot: navigation-strategies-${timestamp}.png`); console.log('\n🔍 Browser will stay open for 30 seconds for manual testing...'); console.log(' Try opening a new tab and navigating to the URL manually!'); await page.waitForTimeout(30000); } catch (error) { console.error('❌ Test failed:', error.message); } finally { if (browser) { await browser.close(); console.log('🔒 Browser closed'); } } } testNavigationStrategies().catch(console.error);

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