Транспортир - огурец - JS - неопределенные шаги - PullRequest
0 голосов
/ 20 сентября 2019

Я сталкиваюсь со следующей ситуацией с Cucumber в Protractor (с помощью Webstorm)

Когда я пытаюсь запустить единственную имеющуюся у меня функцию, отображается следующее сообщение (я уже определил шаги вкласс)

 Undefined. Implement with the following snippet:

     Given('I open the url {string}', function (string) {
       // Write code here that turns the phrase above into concrete actions
       return 'pending';
     });
...
1 scenario (1 undefined)
4 steps (4 undefined)
0m00.000s

Process finished with exit code 1

Это мой файл конфигурации (conf.js)

exports.config = {

framework: 'custom',
frameworkPath: require.resolve('protractor-cucumber-framework'),
seleniumAddress: 'http://localhost:4444/wd/hub',
baseUrl: 'https://www.afphabitat.cl/portalPrivado_FIXWeb/public/login.htm',
ignoreSynchronization: true,
getPageTimeout: 60000,
allScriptsTimeout: 50000,
defaultTimeoutInterval: 30000,

specs: ['features/*.feature'],
cucumberOpts: {
    compiler: [],
    require: ['step_defs/*.js'],
    dryRun  : false,
    tags: ['@wip'],
    monochrome: true,
    strict: true,
    plugin: "json",
    format: 'json:reports/cucumber-report.json',
    resultJsonOutputFile: 'reports/cucumber-report.json'
},

multiCapabilities:
    [{
        'browserName': 'chrome',
        chromeOptions: {
            binary: process.env.CHROME_BIN,
            args: ['--no-sandbox', '--start-maximized']
        }
    },
        {
            'browserName': 'firefox',
            args: ['--no-sandbox','--start-maximized']
        }],
jasmineNodeOpts: {
    showColors: true,
    defaultTimeoutInterval: 30000,
}
}

Следующим является мой файл определения шага (step_defs_Login.js)

import { Given, Then, When } from "cucumber";
import { browser, by, element, } from 'protractor';

    Given('I open the url {string}', function (string) {
        browser.get(string);
        //    callback();
    });

    When('proceed to enter my username as {string}', function (string1) {
        let username = element(by.id('j_username_input')).clear();
        username = element(by.id('j_username_input')).sendKeys(string1);
        //    callback();
    });

    When('proceed to enter my password as {string}', function (string2) {
        let password = element(by.id('j_password')).clear();
        password = element(by.id('j_password')).sendKeys(string2);
        //    callback();
    });

    Then('I have been logged in successfully', function () {
        element(by.id('button')).click();
        //   callback();
    });

Не забудьте файл JSON (package.json)

    {
  "name": "package",
  "version": "1.0.0",
  "description": "First Protractor Cucumber project",
  "main": "conf.js",
  "scripts": {
    "test": "cucumberjs"
  },
  "keywords": [
    "TAE"
  ],
  "author": "zzz",
  "license": "ISC",
  "devDependencies": {
    "cucumber": "^5.1.0",
    "selenium-webdriver": "^4.0.0-alpha.5"
  },
  "dependencies": {
    "protractor": "latest"
  }
}

Не знаю, нужно ли это илинет, но это мой файл хуков (hooks.js)

let {defineSupportCode} = require('cucumber');
defineSupportCode (function ({After, Before}){

    Before(function () {
     //   return this.driver.manage().window().maximize()
     return this.browser.manage().window().maximize();
    })

    After(function () {
        return this.driver.quit()
    })

});

Я установил следующие:

Protractor version 5.4.2 
Node version 10.16.3 
NPM 6.9.0

Это структура проекта:

Project Structure

И это Конфигурации запуска

Run Configurations

Может кто-нибудьпожалуйста, помогите мне с этим ???

Ответы [ 2 ]

0 голосов
/ 23 сентября 2019

Есть ли у вас строка, которую вы передаете, в файле объектов, заключенном в "двойные кавычки"?

I open the url "myUrl"
0 голосов
/ 21 сентября 2019

Попробуйте

require: ['../step_defs/*.js']

или

require: ['./step_defs/*.js']

В объекте cucumberOpts

...