Introducing dynamic descriptions
๐ฃ 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.
Want to learn more? Read on!