Кукловодчик window.performance.timing в угловой js 1.x - PullRequest
0 голосов
/ 14 ноября 2018

Я написал ниже тестовый пример для 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 } ] }
...