如何提高操纵up的启动性能

问题描述 投票:0回答:1

我在Puppeteer的帮助下编写了一个小型爬虫。现在,我面临的挑战是我的测试相当慢(每个测试> 3秒)。我已经能够追踪到Puppeteer andlaunch功能,使用Istanbul / nyc

  • 如果仅使用mocha运行测试,则测试将在400毫秒内完成。
  • 但是如果我另外使用nyc,则测试持续时间超过3000毫秒

我正在使用的是

'use strict';
const puppeteer = require('puppeteer');


module.exports = async function startBrowser() {
  const options = {
    args: [
      // '--no-sandbox',
      // '--disable-setuid-sandbox',
      // '--disable-dev-shm-usage',
      // '--disable-accelerated-2d-canvas',
      // '--disable-gpu'
    ],
    headless: false // true
  };

  return await puppeteer.launch(options);
};

这是我正在使用的测试:

'use strict';
/* global describe: false, before: false, it: false,
    beforeEach: false, afterEach: false, after: false, window: false, document: false */

const assert = require('assert').strict;
const startBrowser = require('../');
const util = require('util');



describe('Puppeteer', function() {
  let pageManager;

  it('start the browser', async function() {
    this.timeout(10000);

    console.time('startBrowser');
    const browser = await startBrowser();
    console.timeEnd('startBrowser');
    assert(browser);

    console.time('closeBrowser');
    await browser.close();
    console.timeEnd('closeBrowser');
  });

});

我已经使用此代码创建了一个存储库,并测试了herenyc _mocha ./test/*.test.js的运行时间约为3500ms,mocha ./test/*.test.js的运行时间仅为130ms。

到目前为止我已经尝试过:

  • 包含/排除nyc标志的不同组合
  • 更新到最新版本的Puppeteer,nyc和mocha
  • 删除我的伪造者参数
  • 正在搜索与木偶戏和伊斯坦布尔有关的问题(没有多少成功)
  • 尝试headless: true
  • 绕过所有代理,see this puppeteer issue

我该怎么做才能使覆盖范围的测试与单独进行的测试一样快?

使用:

  • Ubuntu 19.04
  • node.js 10.15.3
node.js puppeteer istanbul nyc
1个回答
0
投票

[enter image description here也请尝试此操作。

'use strict'
const puppeteer = require('puppeteer')

module.exports = async function startBrowser() {
  const options = {
    args: [
      '--no-sandbox',
      '--disable-setuid-sandbox',
      '--disable-dev-shm-usage',
      '--disable-accelerated-2d-canvas',
      '--no-first-run',
      '--no-zygote',
      '--single-process', // <- this one doesn't works in Windows
      '--disable-gpu'
    ],
    headless: true
  }

  return await puppeteer.launch(options)
}
© www.soinside.com 2019 - 2024. All rights reserved.