web-dev-qa-db-ja.com

Cucumberを使用するように分度器を構成する方法

.20.1 現在、キュウリは分度器で完全にサポートされていますが、適切に構成する方法に関するドキュメントを見つけるために戦っています。 world.jsをどのように設定するか考えていますか?

私はこの例を https://github.com/whyvez/angular-cucumber-example/blob/master/features/support/world.coffee で見つけましたが、それでもあなたがそうするかどうかはわかりません分度器の設定ファイル(referenceConf.js)にはすでにこの情報がすべて含まれているため、必要なすべてのモジュールと設定を指定する必要があります。

assert = require 'assert'
path = require 'path'

protractor = require 'protractor'
webdriver = require 'Selenium-webdriver'

driver = new webdriver.Builder().
  usingServer('http://localhost:4444/wd/hub').
  withCapabilities(webdriver.Capabilities.chrome()).
  build()

driver.manage().timeouts().setScriptTimeout(100000)

ptor = protractor.wrapDriver driver

class World
  constructor: (callback) ->
    @browser = ptor
    @By = protractor.By
    @assert = assert
    callback()

module.exports.World = World
11
dex

ProtractorをCucumberで構成し、Worldを利用する方法を示すサンプルプロジェクトを作成しました。

Worldは、コードを整理しておくことができるように、さまざまなシナリオ間で共通点を共有する場所です。

実際に必要なのは、/ featuresの下の/ supportというフォルダーにworld.jsファイルを作成することだけです。そこにもフックを配置します。そこにあるすべてのプロパティまたは関数は、ステップ定義で使用できます。

world.js:

module.exports = function() {

  this.World = function World(callback) {
    this.prop = "Hello from the World!";

    this.greetings = function(name, callback) {
      console.log("\n----Hello " + name);
      callback();
    };

    callback();
}

そして、あなたのステップで:

var sampleSteps = function() {

    this.Given(/^this is the first sample$/, function (callback) {
      console.log("\n----" + this.prop);
      callback();
    });

    this.Given(/^this is the second sample$/, function (callback) {
      this.greetings("everybody", callback);
    });

};

module.exports = sampleSteps;

Protractor.js構成ファイルは次のようになります。

exports.config = {

  specs: [
    'e2e/features/*.feature'
  ],

  capabilities: {
    'browserName': 'chrome'
  },

  baseUrl: 'http://localhost:8081/',

  framework: 'cucumber',

};

これはGitHubリポジトリです。

https://github.com/plopcas/st-protractor-cucumber

お役に立てれば。

13
Pedro Lopez

protractor-cucumbe -を見てください。Selenium-webdriverが付属しており、Promisesをサポートしており、十分に文書化されています。

最小限の構成が必要なようで、必要なものは明確に文書化されています。

1
LeeGee

構成ファイルにフレームワークとして追加します。

exports.config = {
  // set to "custom" instead of cucumber.
  framework: 'custom',

  // path relative to the current config file
  frameworkPath: 'protractor-cucumber-framework'

  // relevant cucumber command line options
  cucumberOpts: {
    format: "summary"
  }
};

詳細はこちら: 分度器フレームワーク

0

私はこのセットアップから良いマイレージを得ました

  class ChtWorld
    chai = require('chai');
    chaiAsPromised = require('chai-as-promised');

    constructor:  ->
      @browser = @protractor = require('protractor').getInstance()
      @By = @protractor.By
      chai.use(chaiAsPromised)
      @expect= chai.expect


  module.exports= ->
    this.World= (callback) ->
      w = new ChtWorld()
      callback(w)

分度器はすでに設定されているので、それへの参照を取得するだけで十分です(Cucumberが新しい世界を正しくロードするには、modules.exportsが適切である必要があることに注意してください)。

ちなみに、これはfeatures/support/world.coffeeにあり、「requires」リストに明示的に追加されていません(そうしようとすると、Gherkin Lexingエラーの問題が発生しました)。

0
aabes