7a0da7932b
OSV-Scanner (Scheduled) / scan-scheduled (push) Failing after 0s
Create Release / test-gate (push) Has been cancelled
Create Release / release-gate (push) Has been cancelled
Create Release / ci-gate (push) Has been cancelled
Create Release / version-check (push) Has been cancelled
Create Release / e2e-test-gate (push) Has been cancelled
Create Release / responsive-test-gate (push) Has been cancelled
Create Release / compat-test-gate (push) Has been cancelled
Create Release / compose-integration-gate (push) Has been cancelled
Create Release / vulture-gate (push) Has been cancelled
Create Release / build (push) Has been cancelled
Create Release / provenance (push) Has been cancelled
Create Release / prerelease-docker (push) Has been cancelled
Create Release / publish-docker (push) Has been cancelled
Create Release / create-release (push) Has been cancelled
Create Release / cleanup-changelog (push) Has been cancelled
Create Release / trigger-pypi (push) Has been cancelled
Create Release / monitor-pypi (push) Has been cancelled
Create Release / Clean up orphan prerelease tags and signatures (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [research-form] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [research-metrics] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [research-workflow] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [settings-core] (push) Has been cancelled
CodeQL Advanced / Analyze (javascript-typescript) (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [history-news] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [library] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [link-analytics] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [chat-core] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [chat-lifecycle] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [error-benchmark] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [settings-pages] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) (push) Has been cancelled
Docker Tests (Consolidated) / Accessibility Tests (push) Has been cancelled
Docker Tests (Consolidated) / LLM Unit Tests (push) Has been cancelled
Docker Tests (Consolidated) / LLM Example Tests (push) Has been cancelled
Docker Tests (Consolidated) / Production Image Smoke Test (push) Has been cancelled
Docker Tests (Consolidated) / Infrastructure Tests (push) Has been cancelled
OSSF Scorecard / OSSF Security Scorecard Analysis (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [mobile] (push) Has been cancelled
Backwards Compatibility / Verify Encryption Constants (push) Has been cancelled
Backwards Compatibility / PyPI Version Compatibility (push) Has been cancelled
Backwards Compatibility / Database Migration Tests (push) Has been cancelled
CodeQL Advanced / Analyze (python) (push) Has been cancelled
Docker Tests (Consolidated) / detect-changes (push) Has been cancelled
Docker Tests (Consolidated) / Build Test Image (push) Has been cancelled
Docker Tests (Consolidated) / All Pytest Tests + Coverage (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [accessibility] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [api-crud] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [auth-login] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [auth-pages] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [auth-register] (push) Has been cancelled
136 lines
5.1 KiB
JavaScript
136 lines
5.1 KiB
JavaScript
const puppeteer = require('puppeteer');
|
|
const AuthHelper = require('./auth_helper');
|
|
const fs = require('fs').promises;
|
|
const { getPuppeteerLaunchOptions } = require('./puppeteer_config');
|
|
|
|
const BASE_URL = 'http://127.0.0.1:5000';
|
|
|
|
async function testMetricsDisplay() {
|
|
console.log('🧪 Starting Metrics Display Test');
|
|
console.log('================================\n');
|
|
|
|
const browser = await puppeteer.launch(getPuppeteerLaunchOptions());
|
|
|
|
const page = await browser.newPage();
|
|
|
|
try {
|
|
// Step 1: Create and authenticate user
|
|
const username = `metrics_test_${Date.now()}`;
|
|
const password = 'T3st!Secure#2024$LDR';
|
|
|
|
console.log(`📝 Creating user: ${username}`);
|
|
console.log(` Password has special characters: ${password}\n`);
|
|
|
|
const auth = new AuthHelper(page, BASE_URL);
|
|
await auth.register(username, password);
|
|
|
|
// Step 2: Start a simple research
|
|
console.log('🔬 Starting research...');
|
|
await page.goto(`${BASE_URL}/`, { waitUntil: 'domcontentloaded' });
|
|
|
|
// Wait for the query field to be visible
|
|
await page.waitForSelector('#query', { visible: true });
|
|
|
|
// Type a simple query
|
|
await page.type('#query', 'What is 2+2?');
|
|
|
|
// Submit - find submit button
|
|
const submitButton = await page.$('button[type="submit"], button#submit-research');
|
|
if (submitButton) {
|
|
await Promise.all([
|
|
page.waitForNavigation(),
|
|
submitButton.click()
|
|
]);
|
|
} else {
|
|
// Try pressing Enter
|
|
await Promise.all([
|
|
page.waitForNavigation(),
|
|
page.keyboard.press('Enter')
|
|
]);
|
|
}
|
|
|
|
console.log('✅ Research started\n');
|
|
|
|
// Step 3: Wait a bit for metrics to be generated
|
|
console.log('⏳ Waiting 20 seconds for metrics to be generated...');
|
|
await new Promise(resolve => setTimeout(resolve, 20000));
|
|
|
|
// Step 4: Go to metrics page
|
|
console.log('\n📊 Navigating to metrics dashboard...');
|
|
await page.goto(`${BASE_URL}/metrics`, { waitUntil: 'domcontentloaded' });
|
|
await new Promise(resolve => setTimeout(resolve, 3000)); // Let page fully load
|
|
|
|
// Step 5: Check what's on the page (with error handling)
|
|
let pageContent;
|
|
try {
|
|
pageContent = await page.evaluate(() => {
|
|
return {
|
|
title: document.title,
|
|
bodyText: document.body.innerText,
|
|
// Look for any elements that might contain metrics
|
|
elements: {
|
|
tables: document.querySelectorAll('table').length,
|
|
charts: document.querySelectorAll('canvas').length,
|
|
cards: document.querySelectorAll('.ldr-card, .metric-card, .stat-box').length,
|
|
divs: document.querySelectorAll('div').length
|
|
}
|
|
};
|
|
});
|
|
} catch {
|
|
console.log('⚠️ Error evaluating page, likely frame detached');
|
|
// Provide default values
|
|
pageContent = {
|
|
title: 'Error reading page',
|
|
bodyText: '',
|
|
elements: { tables: 0, charts: 0, cards: 0, divs: 0 }
|
|
};
|
|
}
|
|
|
|
console.log('\n=== METRICS PAGE CONTENT ===');
|
|
console.log(`Page Title: ${pageContent.title}`);
|
|
console.log(`Elements found:`);
|
|
console.log(`- Tables: ${pageContent.elements.tables}`);
|
|
console.log(`- Charts (canvas): ${pageContent.elements.charts}`);
|
|
console.log(`- Cards: ${pageContent.elements.cards}`);
|
|
console.log(`- Total divs: ${pageContent.elements.divs}`);
|
|
|
|
console.log('\n=== PAGE TEXT (first 1000 chars) ===');
|
|
console.log(pageContent.bodyText.substring(0, 1000));
|
|
console.log('...\n');
|
|
|
|
|
|
// Check if metrics are visible
|
|
const hasMetrics = pageContent.bodyText.toLowerCase().includes('token') ||
|
|
pageContent.bodyText.toLowerCase().includes('search') ||
|
|
pageContent.bodyText.toLowerCase().includes('metric');
|
|
|
|
if (hasMetrics) {
|
|
console.log('✅ Metrics page contains metric-related text');
|
|
} else {
|
|
console.log('❌ No metric-related text found on page');
|
|
}
|
|
|
|
// Look for specific metric values
|
|
const numbers = pageContent.bodyText.match(/\d+/g);
|
|
if (numbers && numbers.length > 0) {
|
|
console.log(`✅ Found ${numbers.length} numeric values on page`);
|
|
console.log(` First few numbers: ${numbers.slice(0, 10).join(', ')}`);
|
|
} else {
|
|
console.log('❌ No numeric values found on page');
|
|
}
|
|
|
|
console.log('\n✅ Test completed successfully!');
|
|
} catch (error) {
|
|
console.error('❌ Test error:', error.message);
|
|
process.exitCode = 1;
|
|
} finally {
|
|
// Close browser properly
|
|
await browser.close();
|
|
}
|
|
}
|
|
|
|
testMetricsDisplay().catch(err => {
|
|
console.error('❌ Unhandled error:', err);
|
|
process.exitCode = 1;
|
|
});
|