Serenity / JS: Почему утверждение в See.if иногда возвращает пустую строку? - PullRequest
0 голосов
/ 06 июля 2018

У меня проблема с See.if () - иногда он возвращает пустую строку.

Используемый технический стек:

  1. Serenity / JS с огурцом и транспортиром
  2. P-Growl - Primeng рычание, составляющее
  3. Чай, как и было обещано - ожидаемый метод

Вот ошибка: Ошибка подтверждения: ожидается, что '' будет включать 'Успешность операции'

steps.ts

this.Then(/^he should see the user (.*) success message$/, (severity) => {

    browser.waitForAngularEnabled(false); // Workaround fix for p-growl

    return stage.theActorInTheSpotlight().attemptsTo(
        Messages.called(severity)
    );
});

Task.ts

import { PerformsTasks, Task, Enter, Click, See, Is, Wait, Text } from 'serenity-js/protractor';

import { expect } from '../utils/expect';
import { ListUI } from '../components/ui';

export class Messages implements Task {

  constructor(private severity: string) { }

  static called(severity: string) {
    return new Messages(severity);
  }

  performAs(actor: PerformsTasks): PromiseLike<void> {
    if (this.severity.toLowerCase() === 'success') {
        return actor.attemptsTo(
            Wait.until(ListUI.message, Is.present()),
            See.if(
                Text.of(ListUI.message),
                actual => expect(actual).to.eventually.include('Operation Success')
            ),
            Click.on(ListUI.messageCloseWidget)
        );
    }
  }
}

ui.ts

import { Target, Text } from 'serenity-js/protractor';
import { by } from 'protractor';

export class ListUI {

  static message = Target.the('Message Widget')
    .located(by.id('messages'));

  static messageCloseWidget = Target.the('Message Close Widget')
    .located(by.css('#messages .ui-growl-icon-close'));
}

Пожалуйста, помогите мне. Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 16 июля 2018

Я решил проблему, предоставив селектор сообщений primeng рыча.

Предоставлен точный селектор для сообщения (#messages .ui-growl-message).

Ниже исправлен код:

import { Target, Text } from 'serenity-js/protractor';
import { by } from 'protractor';

export class ListUI {

  static message = Target.the('Message Widget')
    .located(by.css('#messages .ui-growl-message'));

  static messageCloseWidget = Target.the('Message Close Widget')
    .located(by.css('#messages .ui-growl-icon-close'));
}
0 голосов
/ 06 июля 2018

Попробуйте с Wait.for (Duration.ofSeconds (5)), прежде чем wait.until ()

Wait.for(Duration.ofSeconds(5)),
Wait.until(ListUI.message, Is.present()),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...