
If you’re using Cypress, eventually you will have to assert some text. However, they provide at least three methods to do that, and from the documentation is not clear the difference between:
.should("have.text", "expected text goes here")
.should("include.text", "expected text goes here")
.should("contain.text", "expected text goes here")
Do they all accept text? Some accept regex? Exact match or substring?
This is a summary of the answer I received:
have.text
: exact text matchinclude(s).text
: substring matchcontain(s).text
: substring match
Let’s see it in action with some examples. Assume we want to assert the heading of a webpage. When you select that element with cy.get("h1")
you get the text “This is a heading”. So if you do:
.should("have.text", "This is a heading")
passes ✅.should("have.text", "heading")
fails ❌.should("include.text", "This is a heading")
passes ✅.should("include.text", "heading")
passes ✅"contain.text"
is as alias for"include.text"
, so expect the same results