如何使用PUPPETEER附加黄瓜-html-reporter中失败步骤的屏幕截图?

问题描述 投票:0回答:1

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
  • 我尝试使用scenario.attach()-错误:scenario.attach()不是函数
  • 也尝试使用简单的storeScreenshot:我的reporter.js中为false(不变)

如果有人可以帮助我,请给我,我是初学者:)?

javascript puppeteer cucumberjs
1个回答
0
投票

尝试以下挂钩后功能中的代码:

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对象。

© www.soinside.com 2019 - 2024. All rights reserved.