Кукловодчик window.performance.timing в угловой js 1.x
Я написал ниже контрольный пример для 2 страницы (одностраничное веб-приложение angularjs 1.x)
Когда я печатаю показатели производительности, я получаю одинаковый результат для обеих страниц. когда я использую page.goto, он работает нормально. тогда я получаю разные метрики. page.goto - это вход на всю страницу
и я использую page.click, я получаю тот же результат
как получить точные метрики для каждой страницы
describe('Performance Improvement Test', () => {
let page;
before(async () => {
page = await browser.newPage();
await page.setViewport({ width: 1520, height:1080});
await page.goto(login_page);
});
it('After Login , Landing DashBoard Page', async function () {
const start_1 = (new Date()).getTime();
await page.waitForSelector('form[class="form-signin"]');
await page.type('#httpUserName', valid_email);
await page.type('#httpUserPwd', valid_password);
await page.click('#btnLogin');
await page.waitForNavigation({waitUntil: 'networkidle2'});
await page.waitFor('.fmTopLevelMenu');
const end_1 = (new Date()).getTime();
const totalTimeSeconds_1 = (end_1 - start_1) / 1000;
console.log(`Dashboard Page loaded (Include API & UI render) for ${totalTimeSeconds_1} seconds`);
// Save Session Cookies
const cookiesObject = await page.cookies()
jsonfile.writeFile(cookiesFilePath, cookiesObject, { spaces: 2 },
function(err) {
if (err) {
console.log('The file could not be written.', err)
}
})
const performanceMetrics_0 = await page._client.send('Performance.getMetrics');
console.log(performanceMetrics_0);
});
it('Node Page', async function () {
await page.waitForSelector('.fmTopLevelMenu');
await page.waitForSelector('[ng-click="setTopContext(\'topPhysical\',true)"]');
const start = (new Date()).getTime();
await page.click('[ng-click="setTopContext(\'topPhysical\',true)"]'),
await page.waitFor('.mat-paginator-page-size-label');
await page.waitForSelector('.mat-paginator-page-size-label');
const end = (new Date()).getTime();
const totalTimeSeconds = (end - start) / 1000;
console.log(`----------------------------------------------------------`);
console.log(`Node Page loaded (Include API & UI render) for ${totalTimeSeconds} seconds`);
const performanceMetrics_1 = await page._client.send('Performance.getMetrics');
console.log(performanceMetrics_1);
});
});
{ metrics:
[ { name: 'Timestamp', value: 192252.303885 },
{ name: 'AudioHandlers', value: 0 },
{ name: 'Documents', value: 10 },
{ name: 'Frames', value: 8 },
{ name: 'JSEventListeners', value: 759 },
{ name: 'LayoutObjects', value: 2846 },
{ name: 'MediaKeySessions', value: 0 },
{ name: 'MediaKeys', value: 0 },
{ name: 'Nodes', value: 17868 },
{ name: 'Resources', value: 49 },
{ name: 'ScriptPromises', value: 0 },
{ name: 'PausableObjects', value: 114 },
{ name: 'V8PerContextDatas', value: 2 },
{ name: 'WorkerGlobalScopes', value: 0 },
{ name: 'UACSSResources', value: 0 },
{ name: 'RTCPeerConnections', value: 0 },
{ name: 'ResourceFetchers', value: 10 },
{ name: 'AdSubframes', value: 0 },
{ name: 'DetachedScriptStates', value: 0 },
{ name: 'LayoutCount', value: 230 },
{ name: 'RecalcStyleCount', value: 544 },
{ name: 'LayoutDuration', value: 0.243114 },
{ name: 'RecalcStyleDuration', value: 0.632702 },
{ name: 'ScriptDuration', value: 3.91218 },
{ name: 'V8CompileDuration', value: 0.384159 },
{ name: 'TaskDuration', value: 6.725938 },
{ name: 'JSHeapUsedSize', value: 69782296 },
{ name: 'JSHeapTotalSize', value: 102981632 },
{ name: 'FirstMeaningfulPaint', value: 192246.483122 },
{ name: 'DomContentLoaded', value: 192245.485712 },
{ name: 'NavigationStart', value: 192233.326911 } ] }