使用 Karma 时如何访问规范文件中的 Puppeteer 对象?
How do I access the Puppeteer object in my spec file while using Karma?
我有一个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"
}
所以我的问题是。如何确保我的规范文件中可以使用人偶对象?
简短的回答是:你不能。
Karma 用于 运行 您在浏览器中的测试代码(参见 here), while Puppeteer is a node library. There is a POC for running Puppeteer code in browser, see here,但这只是一个 POC。
我有一个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"
}
所以我的问题是。如何确保我的规范文件中可以使用人偶对象?
简短的回答是:你不能。
Karma 用于 运行 您在浏览器中的测试代码(参见 here), while Puppeteer is a node library. There is a POC for running Puppeteer code in browser, see here,但这只是一个 POC。