addCase.js:
const {Given, When, Then, Before, After} = require('cucumber');
After(async function(scenario) {
if (scenario.result.status === 'failed') {
const screenShot = await this.page.screenshot();
this.attach(screenShot,'image/png');
}
});
world.js:
const expect = require("chai");
const puppeteer = require("puppeteer");
const {setWorldConstructor} = require("cucumber");
const helpers = require("../../helpers");
const config = require("../../config");
class CustomWorld{
async launchBrowser(){
this.browser = await puppeteer.launch({
headless: config.isHeadless,
args: config.args,
});
this.page = await this.browser.newPage();
await this.page.setViewport({
width: config.viewportWidth,
height: config.viewportHeight
});
}
}
setWorldConstructor(CustomWorld);
错误:
TypeError: this.attach is not a function
如果有人可以帮助我,请给我,我是初学者:)?
尝试以下挂钩后功能中的代码:
if (!(scenario.result.status === 'failed')) return;
try {
const data18 = await driver.takeScreenshot();
const image18 = Buffer.from(data18, 'base64');
await this.World.attach(image18, 'image/png');
} catch (e) {
console.log(e.message);
}
此代码将检查方案是否失败。如果失败,它将捕获驱动程序屏幕截图,并将在nodejs Buffer的帮助下附加到this.world对象。