【问题标题】:How do I access the Puppeteer object in my spec file while using Karma?使用 Karma 时如何访问我的规范文件中的 Puppeteer 对象?
【发布时间】:2018-12-14 16:37:15
【问题描述】:

我有一个 Gulp 任务

gulp.task('ui-test', (done) =>
  new karmaServer({
      configFile: __dirname + '/karma.conf.js',
      singleRun: true
  }, done).start()
)

Karma 配置

process.env.CHROME_BIN = require('puppeteer').executablePath()

module.exports = function(config) {
  config.set({
    browsers: ['ChromeHeadless'],
    files: [
      {pattern: 'ui-testing/*.spec.js', included: false},
    ],
    // frameworks to use
    frameworks: ['mocha', 'chai'],
  })
}

以及希望使用 Puppeteer 的规范:

puppeteer = require('puppeteer')    

describe('login test', function () {
  let page;

  before (async function () {
    const browser = await puppeteer.launch();
    page = await browser.newPage();
    await page.goto('http://google.com');
  });

  after (async function () {
    await page.close();
  })

  it('should load the google page', async function () {
    expect(await page.title()).to.eql('Google');
  });
});

这当然会产生错误:

06 07 2018 08:15:16.164:INFO [HeadlessChrome 0.0.0 (Mac OS X 10.13.5)]: Connected on socket F1USmhKrpR4Eau9aAAAA with id 26089338
HeadlessChrome 0.0.0 (Mac OS X 10.13.5) ERROR
  {
    "message": "Uncaught ReferenceError: require is not defined\nat ui-testing/login.spec.js:1:1\n\nReferenceError: require is not defined\n    at ui-testing/login.spec.js:1:1",
    "str": "Uncaught ReferenceError: require is not defined\nat ui-testing/login.spec.js:1:1\n\nReferenceError: require is not defined\n    at ui-testing/login.spec.js:1:1"
  }

所以我的问题是。如何确保 puppeteer 对象在我的规范文件中可用?

【问题讨论】:

标签: javascript gulp mocha.js karma-runner puppeteer


【解决方案1】:

简短的回答是:你不能。

Karma 用于在浏览器中运行测试代码(请参阅here),而 Puppeteer 是一个节点库。有一个 POC 用于在浏览器中运行 Puppeteer 代码,请参阅here,但这只是一个 POC。

【讨论】:

    猜你喜欢
    • 2021-09-24
    • 2019-06-06
    • 2019-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-14
    • 1970-01-01
    相关资源
    最近更新 更多