102 lines
2.7 KiB
JavaScript
102 lines
2.7 KiB
JavaScript
const { chromium } = require('playwright');
|
|
|
|
const session = {
|
|
subjectId: 'user-author',
|
|
tenant: 'tenant-default',
|
|
scopes: [
|
|
'ui.read',
|
|
'policy:read',
|
|
'policy:author',
|
|
'policy:simulate',
|
|
'advisory-ai:view',
|
|
'advisory-ai:operate',
|
|
'findings:read',
|
|
'vex:read',
|
|
'admin',
|
|
],
|
|
};
|
|
|
|
(async () => {
|
|
const browser = await chromium.launch({
|
|
headless: true,
|
|
args: ['--no-sandbox', '--no-proxy-server'],
|
|
});
|
|
const context = await browser.newContext({ ignoreHTTPSErrors: true });
|
|
const page = await context.newPage();
|
|
|
|
const navHistory = [];
|
|
const httpErrors = [];
|
|
const failures = [];
|
|
let currentUrl = '';
|
|
|
|
page.on('framenavigated', (frame) => {
|
|
if (frame !== page.mainFrame()) {
|
|
return;
|
|
}
|
|
|
|
const entry = `${new Date().toISOString()} ${frame.url()}`;
|
|
navHistory.push(entry);
|
|
console.log('[nav]', entry);
|
|
});
|
|
|
|
page.on('response', (response) => {
|
|
if (response.status() < 400) {
|
|
return;
|
|
}
|
|
|
|
const request = response.request();
|
|
const entry = `${response.status()} ${request.method()} ${response.url()}`;
|
|
httpErrors.push(entry);
|
|
console.log('[http-error]', entry);
|
|
});
|
|
|
|
page.on('requestfailed', (request) => {
|
|
const entry = `${request.method()} ${request.url()} :: ${request.failure()?.errorText ?? 'failed'}`;
|
|
failures.push(entry);
|
|
console.log('[requestfailed]', entry);
|
|
});
|
|
|
|
page.on('console', (msg) => {
|
|
if (msg.type() === 'error') {
|
|
console.log('[console-error]', msg.text());
|
|
}
|
|
});
|
|
|
|
await page.addInitScript((stubSession) => {
|
|
window.__stellaopsTestSession = stubSession;
|
|
}, session);
|
|
|
|
const target = process.argv[2] ?? 'https://stella-ops.local/';
|
|
console.log('[goto]', target);
|
|
|
|
try {
|
|
await page.goto(target, { waitUntil: 'commit', timeout: 20000 });
|
|
} catch (error) {
|
|
console.log('[goto-error]', error.message);
|
|
}
|
|
|
|
for (let i = 0; i < 20; i += 1) {
|
|
const url = page.url();
|
|
if (url !== currentUrl) {
|
|
currentUrl = url;
|
|
console.log('[url-change]', url);
|
|
}
|
|
|
|
await page.waitForTimeout(1000);
|
|
}
|
|
|
|
const searchInputCount = await page
|
|
.evaluate(() => document.querySelectorAll('app-global-search input[type="text"]').length)
|
|
.catch(() => -1);
|
|
|
|
console.log('[final-url]', page.url());
|
|
console.log('[title]', await page.title().catch(() => '<title unavailable>'));
|
|
console.log('[search-input-count]', searchInputCount);
|
|
console.log('[nav-count]', navHistory.length);
|
|
console.log('[http-error-count]', httpErrors.length);
|
|
console.log('[failed-request-count]', failures.length);
|
|
|
|
await page.screenshot({ path: 'output/playwright/stella-ops-local-load-check-viewport.png' });
|
|
await browser.close();
|
|
})();
|