8

How can i get current Feature, Scenario and Step in World?

I tried this way but I only have the Scenario name and description :

module.exports = function () {
    /**
     * Before each scenario
     */
    this.Before(function (scenario, callback) {
        console.log(scenario);
        callback();
    });
};

Thanks for your help.

4

2 に答える 2

5

わかりましたので、最終的にこの解決策を見つけました。フックで呼び出される Context オブジェクトを作成します。

hooks.jsファイル:

var context = require(process.cwd() + '/src/e2e/support/context');

module.exports = function Hooks() {

    this.BeforeFeature(function (event, callback) {
        context.setCurrentFeature(event.getPayloadItem('feature'));

        callback();
    });

    this.BeforeScenario(function (event, callback) {
        context.setCurrentScenario(event.getPayloadItem('scenario'));

        callback();
    });

    this.BeforeStep(function (event, callback) {
        context.setCurrentStep(event.getPayloadItem('step'));

        callback();
    });
};

オブジェクトにはcontextgetter/setter メソッドしかありません。

コード内のどこからでも、現在の機能/シナリオ/ステップにアクセスできるようになりました。

私の例では、世界で:

var context = require(process.cwd() + '/src/e2e/support/context');

module.exports = function () {
    this.World = function World(callback) {
        this.handleError = function (error, callback) {
            var _this = this;

            browser.takeScreenshot().then(function (imageData) {
                var formatFeature = helperString.slugify(context.getCurrentFeature().getName());
                var formatScenario = helperString.slugify(context.getCurrentScenario().getName());

                var token = formatFeature + '_' + formatScenario;
                var path = process.cwd() + '/logs/test/e2e/';

                var pngStream = fs.createWriteStream(path + token + '_screenshot.png')    ;

                pngStream.write(new Buffer(imageData, 'base64'));
                pngStream.end();

                _this.delayCallback(function handleErrorCallback() {
                    callback.fail(new Error(error));
                });
            });

            return _this;
        };
    };
};
于 2015-01-09T16:48:18.323 に答える