web-dev-qa-db-ja.com

テスト中の人形遣いの起動パフォーマンスを改善する方法

私は人形劇の助けを借りて小さなクローラーを書きました。現在、テストがかなり遅い(各テストで3秒以上)という課題に直面しています。私はそれをPuppeteerのlaunch関数およびの使用まで追跡できましたイスタンブール/ 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');
  });

});

このコードでリポジトリを作成し、テスト here を行いました。 nyc _mocha ./test/*.test.jsは〜3500ミリ秒で実行され、mocha ./test/*.test.jsはわずか130msかかります。

これまでに試したこと:

  • include/exclude nycフラグの異なる組み合わせ
  • puppeteer、nyc、mochaの最新バージョンへの更新
  • 私の操り人形の引数を削除する
  • 操り人形師とイスタンブールに関連する問題の検索(あまり成功していません)
  • 試行中headless: true
  • すべてのプロキシをバイパスする この操り人形の問題を参照

カバレッジ付きのテストをテストのみと同じくらい速くするにはどうすればよいですか?

使用:

  • Ubuntu 19.04
  • node.js 10.15.3
6
seasick

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)
}
0
Edi Imanto