Как прикрепить скриншот к HTML отчету транспортира? - PullRequest
0 голосов
/ 02 февраля 2019

В моем проекте protractor я пытаюсь сделать снимок экрана и прикрепить его к моему отчету html.Процесс создания снимка экрана происходит в виде After hook , как показано ниже:

import {  Status,After, HookScenarioResult} from 'cucumber';
import {browser} from 'protractor';
import { async } from 'q';

After(async  (scenario:HookScenarioResult)=> {

    if(scenario.result.status===Status.FAILED){
        const screenshot = await browser.takeScreenshot();
        this.attach(screenshot,"image/png");
    }
});

Но в строке this.attach(screenshot,"image/png"); он жалуется:

TypeError: this.attach is not a function

В чем проблема?

Моя конфигурация:

   "cucumber": "^5.1.0",
    "cucumber-html-reporter": "^4.0.4",
    "protractor": "^5.4.2",
    "protractor-cucumber-framework": "^6.1.1",

Ответы [ 2 ]

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

Попробуйте приведенный ниже код, работающий на меня:

  After(function(scenarioResult) {
    let self = this;
    if (scenarioResult.result.status === Status.FAILED) {
    return browser.takeScreenshot()
    .then(function (screenshot) {
        const decodedImage = new Buffer(screenshot.replace(/^data:image\/png;base64,/, ''), 'base64');
        self.attach(decodedImage, 'image/png');
    });
}
});
0 голосов
/ 02 февраля 2019

Проблема была решена путем изменения функции жира на нормальную.Я до сих пор не понимаю, почему это влияет на мой код, но сейчас работает хорошо, и у меня есть скриншот в моем отчете HTML.

After(async function(scenario) {
    if (scenario.result.status === Status.FAILED) {
        // screenShot is a base-64 encoded PNG
            const screenShot = await browser.takeScreenshot();
            this.attach(screenShot, "image/png");
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...