From 7f09dc728ad5ba14ec5682b3ccee1224ea202a03 Mon Sep 17 00:00:00 2001 From: daspr2 Date: Sat, 31 Dec 2016 20:49:29 -0600 Subject: [PATCH] Updated Cucumber type definition (#13637) to use the new Cucumber Support Code Interface. --- cucumber/cucumber-tests.ts | 28 +++++++++++++++++++++++----- cucumber/index.d.ts | 8 ++++++++ 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/cucumber/cucumber-tests.ts b/cucumber/cucumber-tests.ts index 1b25f9b3bf..515322078d 100644 --- a/cucumber/cucumber-tests.ts +++ b/cucumber/cucumber-tests.ts @@ -1,23 +1,25 @@ -import cucumber = require("cucumber"); +import * as cucumber from "cucumber"; import * as assert from "power-assert"; function StepSample() { type Callback = cucumber.CallbackStepDefinition; type Table = cucumber.TableDefinition; + type HookScenario = cucumber.HookScenario; + type Hooks = cucumber.Hooks; var step = this; var hook = this; - hook.Before(function(scenario, callback){ + hook.Before(function(scenario: HookScenario, callback: Callback){ scenario.isFailed() && callback.pending(); - }) + }); - hook.Around(function(scenario, runScenario) { + hook.Around(function(scenario: HookScenario, runScenario: (error:string, callback?:Function)=>void) { scenario.isFailed() && runScenario(null, function(){ console.log('finish tasks'); }); }); - hook.registerHandler('AfterFeatures', function (event, callback) { + hook.registerHandler('AfterFeatures', function (event:any, callback:Function) { callback(); }); @@ -76,5 +78,21 @@ function StepSample() { ]; assert.deepEqual(table.hashes(), expected) }); + + cucumber.defineSupportCode(function(step: cucumber.StepDefinitions){ + step.Given( /^a variable set to (\d+)$/, (x:string) => { + console.log("the number is: " + x); + } ); + }); + cucumber.defineSupportCode(function(step: Hooks){ + step.After((scenario: HookScenario, callback?: Callback) => { + console.log("After"); + callback(); + } ) + }); + + let fns : cucumber.SupportCodeConsumer[] = cucumber.getSupportCodeFns() + + cucumber.clearSupportCodeFns(); } diff --git a/cucumber/index.d.ts b/cucumber/index.d.ts index de0a8d07d3..8756b77ea6 100644 --- a/cucumber/index.d.ts +++ b/cucumber/index.d.ts @@ -71,4 +71,12 @@ declare namespace cucumber { setDefaultTimeout(time:number): void; registerHandler(handlerOption:string, code:(event:any, callback:CallbackStepDefinition) =>void): void; } + + export interface SupportCodeConsumer { + (stepDefinitions:StepDefinitions | Hooks):void; + } + + export function defineSupportCode(consumer:SupportCodeConsumer): void; + export function getSupportCodeFns(): SupportCodeConsumer[]; + export function clearSupportCodeFns(): void; }