externalPageElementsLocator <Native_Element_Type>
Hierarchy
- Question<Promise<PageElement<Native_Element_Type>[]>>
- PageElementsLocator
Implements
- ChainableMetaQuestion<PageElement<Native_Element_Type>, Question<Promise<PageElement<Native_Element_Type>[]>>>
Index
Constructors
Methods
Screenplay Pattern
Constructors
externalconstructor
Type parameters
- Native_Element_Type = any
Parameters
externallocator: Answerable<Locator<Native_Element_Type, any>>
Returns PageElementsLocator<Native_Element_Type>
Methods
staticexternalfromDocumentRoot
Type parameters
- NET
Parameters
externalselector: Answerable<Selector>
Returns PageElementsLocator<NET>
externaldescribedAs
Parameters
externaldescription: Answerable<string> | MetaQuestion<PageElement<Native_Element_Type>[], Question<Promise<string>>>
Replaces the current description according to the following rules:
- If
descriptionis anAnswerable, it replaces the current description - If
descriptionis aMetaQuestion, the current description is passed ascontexttodescription.of(context), and the result replaces the current description
- If
Returns this
externaldescribedBy
Resolves the description of this object in the context of the provided
actor.Parameters
externalactor: AnswersQuestions & UsesAbilities & { name: string }
Returns Promise<string>
externaltoString
Returns a human-readable description of this object.
Returns string
externalof
Parameters
externalparent: Answerable<PageElement<Native_Element_Type>>
Returns Question<Promise<PageElement<Native_Element_Type>[]>> & ChainableMetaQuestion<PageElement<Native_Element_Type>, Question<Promise<PageElement<Native_Element_Type>[]>>>
externalansweredBy
Parameters
externalactor: AnswersQuestions & UsesAbilities
Returns Promise<PageElement<Native_Element_Type>[]>
Screenplay Pattern
externalas
Maps this question's resolved answer to a QuestionAdapter of a different type.
Provide a function to transform the resolved answer:
import { Question } from '@serenity-js/core'
const number = Question.about('number returned as text', () => '42')
.as(Number)
const name = Question.about('name with whitespace', () => ' Alice ')
.as(value => value.trim())
const firstValue = Question.about('available values', () => ['first', 'second'])
.as(values => values[0])Alternatively, provide a constructor. When you call
.as(MyClass), Serenity/JS passes the resolved answer asMyClass's sole constructor argument. This is particularly useful when wrapping a mounted UI component in an Interaction Object for component testing:const card = story('components/UserCard/Default', { name: 'Alice' }).as(UserCard)To distinguish a mapping function from a constructor, Serenity/JS calls the mapping as a function first. If that throws a
TypeErrorand the mapping has aprototype(indicating an ES6 class), Serenity/JS retries withnew. This preserves the primitive result ofNumber(42), rather than producing aNumberwrapper object.Learn more
Type parameters
- O
Parameters
externalmapping: (answer: PageElement<Native_Element_Type>[]) => O | Promise<O>
A function that transforms the resolved answer, or a constructor that receives it as its sole argument.
Returns QuestionAdapter<O>
A QuestionAdapter that resolves to the mapped answer.
Changes the description of this object, as returned by
Describable.describedByandDescribable.toString.