Ошибка при попытке использовать serenity-js: конструктор класса Cli не может быть вызван без 'new' - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь реализовать подход BDD в моих тестах на транспортир. Пока это довольно простая настройка. Я могу запустить пример теста, используя ``, но когда я попытался использовать serenity-js, следуя инструкциям здесь , я получаю следующую ошибку -

DevTools listening on ws://127.0.0.1:56872/devtools/browser/bf7318c0-b0a4-4dea-8
ae4-e197dbda68f7
Class constructor Cli cannot be invoked without 'new'
[20:09:31] I/launcher - 0 instance(s) of WebDriver still running
[20:09:31] I/launcher - chrome #01 failed 1 test(s)
[20:09:31] I/launcher - overall: 1 failed spec(s)
[20:09:31] E/launcher - Process exited with error code 1
An unexpected error occurred: undefined

Глядя на это, я не могу понять, что является причиной этой ошибки и что я здесь делаю неправильно.

Ниже мой protractor.js файл -

exports.config = {

  allScriptsTimeout: 11000,
  specs: [
    './src/features/**/*.feature'
  ],
  capabilities: {
    'browserName': 'chrome'
  },
  directConnect: true,
  baseUrl: 'http://localhost:4200',
  framework: 'custom',
  // frameworkPath: require.resolve('protractor-cucumber-framework'),
  frameworkPath: require.resolve('serenity-js'),
  cucumberOpts: {
    require: ['./src/steps/**/*.steps.ts'],
    // format: 'pretty',               // enable console output
    compiler: 'ts:ts-node/register'   // interpret step definitions as TypeScript
  },
  serenity: {
    dialect: 'cucumber'
  },
  onPrepare() {
    require('ts-node').register({
      project: 'e2e/tsconfig.e2e.json'
    });
  }
};

Ниже моя структура каталогов -

enter image description here

И вот мой файл app.feature -

Feature: Go to the home
  Display the title

  Scenario: Home Page
    Given I am on the home page
    When I do nothing
    Then I should see the title

Ниже следует app.po -

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

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

  getTitleText() {
    return element(by.css('app-root h1')).getText();
  }
}

Ниже следует app.steps.ts

import { Before, Given, Then, When } from 'cucumber';
import { expect } from 'chai';

import { AppPage } from '../pages/app.po';

let page;

Before(() => {
  page = new AppPage();
});

Given(/^I am on the home page$/, async () => {
  await page.navigateTo();
});

When(/^I do nothing$/, () => {});

Then(/^I should see the title$/, async () => {
  expect(await page.getTitleText()).to.equal('Welcome to poc-serenity!');
});
...