Serenity/JS:为什么 See.if 中的断言有时会返回空字符串?



我遇到了 See.if(( 的问题 - 它有时会返回空字符串。

使用的技术堆栈:

  1. 宁静/JS配黄瓜和量角器
  2. P-咆哮 - 普里蒙咆哮成分
  3. 柴如约而至-期待方法

下面是错误:断言错误:预期"包含"操作成功">

步骤.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)
);
});

任务.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'));
}

请帮助我。提前谢谢。

在 wait.until(( 之前尝试使用 Wait.for(Duration.ofSeconds(5((

Wait.for(Duration.ofSeconds(5)),
Wait.until(ListUI.message, Is.present()),

我通过提供 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'));
}

最新更新