как интегрировать маяк с тесткафе? - PullRequest
0 голосов
/ 25 февраля 2019

Мне нужно передать аргумент connection при вызове lighthouse

https://github.com/GoogleChrome/lighthouse/blob/master/lighthouse-core/index.js#L41

async function lighthouse(url, flags = {}, configJSON, connection) {
  // verify the url is valid and that protocol is allowed
  if (url && (!URL.isValid(url) || !URL.isProtocolAllowed(url))) {
    throw new LHError(LHError.errors.INVALID_URL);
  }

  // set logging preferences, assume quiet
  flags.logLevel = flags.logLevel || 'error';
  log.setLevel(flags.logLevel);

  const config = generateConfig(configJSON, flags);

  connection = connection || new ChromeProtocol(flags.port, flags.hostname);

  // kick off a lighthouse run
  return Runner.run(connection, {url, config});
}

И в моем testcafe мои тесты выглядят как

test('Run lighthouse, async t => {
  lighthouse('https://www.youtube.com', {}, {}, ????)
})

Я не могу получить connection экземпляра Chrome, который открыл testcafe, вместо того, чтобы порождать новый chromeRunner

1 Ответ

0 голосов
/ 01 апреля 2019

Я сделал нечто похожее, я запускаю ligthouse с google chrome на определенном порту, используя CLI

npm run testcafe -- chrome:headless:cdpPort=1234

Затем я делаю функцию lighthouse, чтобы получить порт в качестве аргумента

export default async function lighthouseAudit(url, browser_port){
    let result = await lighthouse(url, {
        port: browser_port,     // Google Chrome port Number
        output: 'json',
        logLevel: 'info',
    });
    return result;
};

Тогда вы можете просто запустить аудит как

    test(`Generate Light House Result `, async t => {
        auditResult = await lighthouseAudit('https://www.youtube.com',1234);
    });

Надеюсь, это поможет

...