私は人形劇の助けを借りて小さなクローラーを書きました。現在、テストがかなり遅い(各テストで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かかります。
これまでに試したこと:
headless: true
カバレッジ付きのテストをテストのみと同じくらい速くするにはどうすればよいですか?
使用:
'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)
}