67 lines
2.5 KiB
JavaScript
67 lines
2.5 KiB
JavaScript
const { chromium } = require('playwright');
|
|
|
|
const session = {
|
|
subjectId: 'user-author',
|
|
tenant: 'tenant-default',
|
|
scopes: ['ui.read', 'policy:read', 'policy:author', 'policy:simulate', 'advisory:search', 'advisory:read', 'search:read', 'findings:read', 'vex:read', 'admin'],
|
|
};
|
|
|
|
(async () => {
|
|
const browser = await chromium.launch({ headless: true, args: ['--no-sandbox'] });
|
|
const context = await browser.newContext({ ignoreHTTPSErrors: true });
|
|
const page = await context.newPage();
|
|
|
|
page.on('requestfailed', (request) => {
|
|
const url = request.url();
|
|
if (url.includes('/search')) {
|
|
console.log('[requestfailed]', request.method(), url, request.failure()?.errorText);
|
|
}
|
|
});
|
|
|
|
page.on('response', (response) => {
|
|
const url = response.url();
|
|
if (
|
|
url.includes('/api/v1/search/query') ||
|
|
url.includes('/api/v1/advisory-ai/search') ||
|
|
url.includes('/api/v1/advisory-ai/search/analytics')
|
|
) {
|
|
const req = response.request();
|
|
console.log('[response]', req.method(), response.status(), url);
|
|
}
|
|
});
|
|
|
|
await page.addInitScript((stubSession) => {
|
|
window.__stellaopsTestSession = stubSession;
|
|
}, session);
|
|
|
|
const url = process.argv[2] || 'https://stella-ops.local/';
|
|
console.log('[goto]', url);
|
|
await page.goto(url, { waitUntil: 'domcontentloaded', timeout: 60000 });
|
|
await page.waitForTimeout(2000);
|
|
|
|
const count = await page.evaluate(() => document.querySelectorAll('app-global-search input[type="text"]').length);
|
|
console.log('[search-input-count]', count);
|
|
|
|
if (count === 0) {
|
|
console.log('[page-url]', page.url());
|
|
console.log('[title]', await page.title());
|
|
await page.screenshot({ path: 'output/playwright/header-search-repro-no-input.png', fullPage: true });
|
|
await browser.close();
|
|
process.exit(1);
|
|
}
|
|
|
|
await page.click('app-global-search input[type="text"]', { timeout: 15000 });
|
|
await page.fill('app-global-search input[type="text"]', 'critical findings', { timeout: 15000 });
|
|
await page.waitForTimeout(3000);
|
|
|
|
const results = await page.evaluate(() => document.querySelectorAll('app-entity-card').length);
|
|
const emptyText = await page.locator('.search__empty').allTextContents();
|
|
const degradedVisible = await page.locator('.search__degraded-banner').isVisible().catch(() => false);
|
|
console.log('[entity-cards]', results);
|
|
console.log('[empty-text]', emptyText.join(' | '));
|
|
console.log('[degraded-banner]', degradedVisible);
|
|
|
|
await page.screenshot({ path: 'output/playwright/header-search-repro-live.png', fullPage: true });
|
|
await browser.close();
|
|
})();
|