test-complete-jwt.js•9.01 kB
#!/usr/bin/env node
/**
* Complete JWT Token Test - Test with the full 3276-character corrected JWT token
*/
import { chromium } from 'playwright';
async function testCompleteJWT() {
console.log('🔍 Testing COMPLETE JWT Token (3276 characters) with Character Fixes');
// COMPLETE JWT token with G→E and K→L character corrections applied (3276 characters)
const completeJWTToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImFkbWluLmRlc2Vudm9sdmltZW50b0BldWNvbnF1aXN0by5jb20iLCJuYW1lIjoiQWRtaW4gRGV2Iiwib2lkIjoiNWZiM2RlYzYtYzQ5NC1lYzExLWEyMmEtZGM5ODQwNDFjOTVkIiwiZGlyZWN0b3J5IjoiYjBmZWY4NjAtYzQ5NC1lYzExLWEyMmEtZGM5ODQwNDFjOTVkIiwiYXBpbSI6IkVFQzUzQTI0LUVDMEUtNDFCOS05NDA1LTg2QTE3NTAwREIzNCIsImRpcm4iOiJEZXNlbnZvbHZpbWVudG8iLCJyb2xlIjpbIlJldmlld0NvbnRyaWJ1dG9yIiwiQ29udHJpYnV0b3JHbG9iYWwiLCJBZG1pbmlzdHJhdG9yR2xvYmFsIl0sImRjbiI6WyJINHNJQUFBQUFBQUFBMkptWUdBd1pRQ0JaQXVqRkdNREM0dFYyMXRTRS1vZHA5NElpMnVVYTNqMXNxRXl6YWhrN3ZxWlN5MG5sLV94c3cyb0xEN05jT2ppRThWelhyZDBEamF3XzQyVW1fZmxrT1loZzlVN0ZKOGx5N1dWQVFBQUFQX18iLCJINHNJQUFBQUFBQUFBMkptWUdBd1pRQ0JaQXVqRkdNREM0c2xCWS0zTjB5WkU1S1NNSFhKTzhjcm0wNS1remgtYVBzTXhtMnZvOTBxYzhXTjktX08wRzRMbmo5dDRqb2R4bnZNdVkycHJEd1NrYlkyamJOMnpuNXJvemJmR3dBQUFQX18iLCJINHNJQUFBQUFBQUFBMkptWUdBd1pRQ0JaQXVqRkdNREM0dnpkMWU1SDFGTzVhenRyR1RuZXZ6emx0U0djM3VFT1IteHExWXZNVHF5NGstaThXR0gwd292cC1ka3FjNm82d2xSZkM0d3k5MVcxSHFqOFU4aEMtRWZMa0pSQUFBQUFQX18iLCJINHNJQUFBQUFBQUFBMkptWUdBd1pRQ0JaQXVqRkdNREM0dU5XMnUyS3A5dXZhUGhkOFNpOE9KNV8yTmRmZnNTSC0temZHTXVmX084Wm5GbXFXRE5qeE1ubnBWelRkVTBPVF9mUldtNVVhTkxlV2oyTjY5Y3JRS0x1SmJQQUFBQUFQX18iLCJINHNJQUFBQUFBQUFBMkptWUdBd1pRQ0JaQXVqRkdNREM0czY2NE5odVhwck52S3FiV1RuUEtGNTU2UzRycXdXNDJ1SnkzbjNGVkxFVjZ4VlljdU9kTnVrZXliMjdKbjRlOS1GaGNNdW1iOTZ1cUx0aEptSDJrX0h0U29MQUFBQUFQX18iLCJINHNJQUFBQUFBQUFBMkptWUdBd1pRQ0JaQXVqRkdNREN3dWpCWjhyQW81RUxEaHRvQ2ZUdmVQcTVET2hpd1dtM3A2eFktTDdIYkpTb2RFU2I2SUVWQ3BQcXpETTJ2WlR6VzlsMXBrWlBFb3Zkbl8tV3R2LWY0bkt3dmEtU0FBQUFBRF9fdyJdLCJzY3AiOlsiSDRzSUFBQUFBQUFBQTJKbVlHRHdZQUFCMDZRMDA5VFU1RlNKTmZzV1NKNDRWWGZBeHZYeDVEc3lzaFhPNmllVGk0cWVYbTZaVVN2QzZ2djNST0hNRDBkVHBDVHUzekFfVUMtWVVIOHIyMzNlS29mQ0hZR3UwWG83aWswWGROWVVxdmotV0hfclhiU3VVYnJZM1VZQUFBQUFfXzgiLCJINHNJQUFBQUFBQUFBd0RTQWkzOUF3QUFBck1BQUFBQUFHRTVaalF6TkRsa2E0TWozbjdQejY0dmpPSWl5LVlNb3dhRDdlMWpqcDZJakE2SVFZMi14TFNOTWFSZWNrTTdzWEJKamR2SkpoeUF5TnZJVHQ5aUFFWHcybVVzM3lIbGc2UHNtSld1Mm1EU2UwbXlrYnQ0OGl1NTlkYTIxMVBNdkxyRzdxOV9teDlhYWI0SjdZbWlNODg2OTVUclk3WFY1Nmlsb3UwdnQ4VmdBMWptbkdYd0paa0ZDTXhYaUlhcGl5S01TVGlfa3BnREdQdlRlYUNNdE5GSXlIU0gwUTZ3bTFwRkJBYzRMQ1dqRThMeWtnc1ZtbEJxRG9aek1oZTVnY21sZHl0VW1FVFltakIyakVaUHdvd0M2NFRZb1JudDJOWkpmRDdDZXg1T3FqY1ptVU5tNjMtVlRYOFh0UEtza1BpSnpIb3kzcHF5dXVycnVrTndZenducHpwak51OEdKZXQ4V2RoMl85ckNoVnpPUnR4N1N5UXEyb2prUmJfWEphenFtTnEwMEVTcTNSZUVSX0pQZmhGOGg4bGlxcGVWeE1FSG5RUGFmMXp2N3FVQ3JzTWtrVjc1TmxnRGVUZ1YvWGVyX0Rud3FkM05VNXNPVVJXWTU5RE1uTkxXUTVMTGRBNDYxUlFRSjVUNU5MMGQ2UGZqVWV4dkZTR0RQdW5jcHAxeDA0TlBOM2ttTmdMSlF3eDZLZjRxLVBZbDVXWmFQUTlXU0NLNHBmeHY3ZTJRZEw0X1IwQ1c3NUdQRHh1bEZQZG1tcmRrc0k2RVhqUTFkQTdkZlNFUnJoZHdvOUhCN0xGMzRYSENnMWg3Z2I4UWVKdmhMTXRjUmtlUzVpQkctOGNfNkdCQU9YUDdQR2ptQ1NUZzV2WGVyX1Rud3FkektCOFdtY1p0OXFjMXZpU0ROV1JHZVN0bHc3d250UzFSSXlBN205cS01YU9FLUx0ODB3bE1HTkxOTi1TVFN3OWVDN2dxVmQtSUZZWlhYQ2NZcWNfcWc1dDhodFdSLVJ2cUJsX3Fjbkt2N2xhaHk5elRTaHJfX1BTRWJqdTg0SkhDV3I5SXhGd2lzYVd1eVZiMUp0ZUQzcDk0WnpWZDhnTEJQRGFRVUJMZHc1SVEzWkJIc3daTXExRjJqVGdEcF92RDJLQzZzVnd1dVhaa3RzYWlrc3pMZW5NcTFUVjRUMmF5QUdyVHB3UlUzMFMwc3hfQ3pCRVlLREV0b2s4eDI5TGlnUnlHMnVfZDVpOHRyVEJ1WTNjVFdzSXVIdzRibXNVV1lkTXNwblRMMXpwNE1LWUFBQURfX3ciXSwibmJmIjoxNzQ4ODc2OTU1LCJleHAiOjE3NTE0Njg5NTUsImlhdCI6MTc0ODg3Njk1NSwiaXNzIjoiaHR0cHM6Ly9hcGkuZGlnaXRhbHBhZ2VzLmNvbS5iciIsImF1ZCI6IkV1Q29ucXVpc3RvIn0.iTUfl6-mwLwFaxYYPf6PufRSYbSJlw3tKejmbc5G42g";
console.log(`✅ JWT Token length: ${completeJWTToken.length} characters`);
const baseURL = "https://composer.euconquisto.com/#/embed";
const orgId = "36c92686-c494-ec11-a22a-dc984041c95d";
const fullURL = `${baseURL}/auth-with-token/pt_br/home/${orgId}/${completeJWTToken}`;
let browser, page;
try {
console.log('1️⃣ Launching browser with COMPLETE corrected JWT token...');
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();
page.setDefaultTimeout(30000);
page.setDefaultNavigationTimeout(60000);
// Log events
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 Composer with COMPLETE JWT...');
console.log(`URL length: ${fullURL.length} characters`);
console.log(`URL: ${fullURL.substring(0, 100)}...`);
const response = await page.goto(fullURL, {
waitUntil: 'domcontentloaded',
timeout: 60000
});
if (!response || !response.ok()) {
console.error(`❌ Navigation failed with status: ${response?.status()}`);
return;
}
console.log('✅ Page loaded successfully');
// Wait for JavaScript initialization
console.log('3️⃣ Waiting for application to initialize...');
await page.waitForTimeout(10000);
// Check page content
const content = await page.evaluate(() => {
const body = document.body;
const buttons = document.querySelectorAll('button');
const hasComposerContent = body.textContent?.includes('Nova') || body.textContent?.includes('Composição') || body.textContent?.includes('Composer');
return {
bodyTextLength: body.textContent?.length || 0,
buttonCount: buttons.length,
hasComposerContent,
title: document.title,
allButtonTexts: Array.from(buttons).slice(0, 10).map(btn => btn.textContent?.trim()).filter(text => text)
};
});
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(' - Available buttons:', content.allButtonTexts);
// Screenshot
const timestamp = Date.now();
await page.screenshot({
path: `complete-jwt-test-${timestamp}.png`,
fullPage: true
});
console.log(`📸 Screenshot saved: complete-jwt-test-${timestamp}.png`);
// Look 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 COMPLETE JWT and \"NOVA COMPOSIÇÃO\" button visible!');
console.log('✅ TASK-001 JWT token correction appears to be successful');
} else {
console.log('⚠️ ISSUE: Page loaded but \"NOVA COMPOSIÇÃO\" button still not visible');
console.log('🔍 This suggests the issue may be beyond JWT token completeness');
}
// Wait a bit longer to observe the page
console.log('6️⃣ Waiting additional time to observe page behavior...');
await page.waitForTimeout(5000);
} catch (error) {
console.error('❌ Test failed:', error.message);
if (page) {
try {
await page.screenshot({
path: `complete-jwt-error-${Date.now()}.png`,
fullPage: true
});
console.log('📸 Error screenshot saved');
} catch (screenshotError) {
console.error('Could not take error screenshot');
}
}
} finally {
if (browser) {
await browser.close();
console.log('🔒 Browser closed');
}
}
}
// Run the test
testCompleteJWT().catch(console.error);