Allow calling assertValue()
on elements which don't support the value
attribute
#935
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Reasoning
Similar to
assertInputValue()
and its use ofinputValue()
, I opted to createelementValue()
, which for a list of supported elements will retrieve thevalue
attribute. If not it will fallback to callinggetText()
on the element in the same wayinputValue()
currently works.Considerations
assertValue()
against, for example, anli
element and expecting to test against text between its tags. Because anli
element supports thevalue
attribute, usingassertValue()
cannot ever cover this scenario.textarea
doesn't have avalue
attribute, its content is still retrieved using$textarea->getAttribute('value')
.Why not use
inputValue()
and extend the list of supported elements?resolveForTyping()
but not all elements that support thevalue
attribute allow typing.inputValue()
expects a variable called$field
yet it would be passed$selector
. This to me is messy.Alternative Approaches
Add an additional assertion within
assertValue()
andassertValueIsNot()
to check that someone is using these methods against an element that supports thevalue
attribute. If not, throw an error.Do nothing - this means users could inadvertently be calling
assertValue()
against an element such as adiv
: