Я написал небольшой гусеничный ход с помощью кукловода. Теперь я сталкиваюсь с проблемой, что мои тесты выполняются довольно медленно (> 3 секунды для каждого теста). Я смог отследить его до функции launch
Puppeteer и использования Стамбул / Нью-Йорк .
- Если я запускаю тест только с
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');
});
});
Я создал хранилище с этим кодом и протестировал здесь . nyc _mocha ./test/*.test.js
работает ~ 3500 мс, mocha ./test/*.test.js
занимает всего 130 мс.
То, что я пробовал до сих пор:
- различные комбинации include / excludenyc flags
- обновление до последних версий Puppeteer, nyc и mocha
- удаление аргументов моего Puppeteer
- поиск проблем, связанных с Puppeteer & Istanbul (без особого успеха)
- пытаясь
headless: true
- минуя все прокси, см. Этот вопрос кукловода
Что можно сделать, чтобы пройти тесты сохват будет таким же быстрым, как и сами тесты?
Использование:
- Ubuntu 19.04
- node.js 10.15.3