Skip to main content

One post tagged with "core"

View All Tags

ยท 8 min read

๐Ÿ“ฃ Serenity/JS Tasks, Interactions and Questions now support dynamic descriptions ๐ŸŽ‰

With the new release of Serenity/JS 3.24, descriptions of Tasks, Interactions, and Questions, including assertions and synchronisation statements, can be determined dynamically at runtime and incorporate the actual values of static and dynamic parameters you passed in.

The new dynamic descriptions feature is particularly useful when designing custom Serenity/JS tasks that accept notes or other dynamic data structures like questions, question adapters, or answerables.

Long story short: to use dynamic descriptions, upgrade to Serenity/JS 3.24 and replace d with the in your custom Task and Interaction definitions:

- import { Task, d } from '@serenity-js/core';
+ import { Task, the } from '@serenity-js/core';

export const recordItem = (name: Answerable<string>): Task =>
- Task.where(d`#actor records an item called ${ name }`,
+ Task.where(the`#actor records an item called ${ name }`,
Enter.theValue(name).into(newTodoInput()),
Press.the(Key.Enter).in(newTodoInput()),
Wait.until(itemNames(), contain(name)),
)

This tiny change to your code will enable your Serenity reports to show the actual values of your task and interaction parameters.

Support for dynamic descriptions

Want to learn more? Read on!