Геркин и огурец в Angular 5: не определено - PullRequest
0 голосов
/ 25 апреля 2018

Когда я пытаюсь создать тест с использованием огурца и огурца, я получаю странную ошибку. Сначала я показываю вам ошибку, затем файлы login.step.ts и login.po.ts:

// Ошибка:

 Undefined. Implement with the following snippet:

         When('Enter the card number in the box', function () {
           // Write code here that turns the phrase above into concrete actions
           return 'pending';
         });

// login.step.ts

import { expect } from 'chai';
const { Given, When, Then, Before } = require('cucumber');

import { browser, by, element } from 'protractor';
import { LoginPage } from './login.po';

  let login: LoginPage;

  Before(() => {
    login = new LoginPage();
  });

  Given(/^Entering in Login$/, { timeout: 10 * 5000 }, async () => {
    await browser.get('http://localhost:49152/login');
  });

  When(/^Enter the card number in the box$/, () => {
    // login.setCardNumber('1234').then((txt) => {
    //   return 'ready!?';
    // })
    login.setCardNumber('1234');
  });

// login.po.ts

import { browser, by, element, until } from 'protractor';

export class LoginPage {
  navigateTo() {
    return browser.get('/login');
  }

  setCardNumber(cardNumber) {
    const input = element(by.css('#box'));
    return input.sendKeys(cardNumber);
  }

}

Первый тест успешно пройден, но во втором тесте процесс завершается с ошибкой.

[EDIT] Добавление файла protractor.conf.js:

exports.config = {
    allScriptsTimeout: 11000,
    specs: [
        // './e2e/**/*.e2e-spec.ts',
        './e2e/features/*.feature'
    ],
    capabilities: {
        'browserName': 'chrome',
        chromeOptions: {
            args: ['disable-infobars']
        },
        metadata: {
            browser: {
                name: 'chrome',
                version: '58'
            },
            device: 'Xubuntu Linux',
            platform: {
                name: 'Linux',
                version: '16.04'
            }
        }
    },
    directConnect: true,
    frameworkPath: require.resolve('protractor-cucumber-framework'),
    plugins: [{
        package: 'protractor-multiple-cucumber-html-reporter-plugin',
        options: {
            automaticallyGenerateReport: true,
            removeExistingJsonReportFile: true
        }
    }],
    cucumberOpts: {
        require: ['./e2e/steps/**/*.ts', './e2e/support/*.ts'],
        tags: [],
        dryRun: false,
        compiler: [],
        format: 'json:reports/results.json',
        strict: true
    },
    baseUrl: 'http://localhost:4200/',
    SELENIUM_PROMISE_MANAGER: false,
    framework: 'custom',
    onPrepare() {
        require('ts-node').register({
            project: 'e2e/tsconfig.e2e.json'
        });
    }
};

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Я нашел ответ на мою проблему. Мне нужно было только включить следующую строку конфигурации в мой шаг Before () в моем тесте:

browser.ignoreSynchronization = true;

Судя по тому, что я читал в разных местах, кажется, что Chrome пытается выполнить какую-то задачу с сокетами, и с помощью этой строки мы отключаем эту задачу.

0 голосов
/ 25 апреля 2018

удалить двойную кавычку " позади box в /^Enter the card number in the box"$/

...