Protractor loggingPrefs,如何在某个测试步骤后开始和停止记录性能日志,并在完成后停止

Protractor loggingPrefs, how to start and stop recording performance logs after certain test step and stop it once its done

我在测试中使用 loggingPrefs 来记录测试期间发出的所有网络调用/http 请求,我想知道是否可以在某些测试步骤后记录性能日志并在该步骤完成后停止它。这样我就可以验证在执行该步骤后是否发出了某些 Http 请求。

例如:

//Start Recording Performance after user is logged in
//and validate certain HTTP request is made
//Stop Recording Performance 
//Log out from application - I do not want to record performance for Logout step

这应该可以完成工作。根据您的需要调整代码。不要忘记附上浏览器

能力:

'goog:chromeOptions': {
    'perfLoggingPrefs': {
        'enableNetwork': true,
        'enablePage': false
    }
},
loggingPrefs: {
 'performance': 'ALL'
}

规范示例:

import { browser } from 'protractor';

describe('dummy test', () => {
    it('should do something', async () => {
        const startTime = Date.now();

        await browser.waitForAngularEnabled(false);
        await browser.get('https://google.com');

        await browser.sleep(5000);

        const endTime = Date.now();

        await collectPerformLog(startTime, endTime);
    });
});

export async function collectPerformLog(timeFrom, timeTo) {
    await browser.manage().logs().get('performance').then((browserLog) => {

        const fs = require('fs-extra');
        const filePath = '/performance/performance.log';
        fs.ensureDirSync('/performance/');
        let filteredData = browserLog
            .filter(data => timeFrom < data.timestamp && timeTo > data.timestamp);
        fs.appendFile(filePath, JSON.stringify(filteredData));

    }).catch((e) => {
        console.log('Error collection performance logs.', e);
    });
}