victorious-traffic-84253
03/15/2023, 12:36 PMCypress.Commands.add(
"shouldNotBeActionable",
{ prevSubject: "element" },
(subject) => {
cy.on("fail", (error) => {
// We expect the click to fail with one of these messages
const disabledMessage = "`cy.click()` failed because this element is";
if (error.message.includes(disabledMessage)) {
expect(error.message).to.include(disabledMessage);
return false;
}
// Using Mocha's async done callback to finish this test so we prove that an uncaught exception was thrown
throw error;
});
// Assumes this click fails
cy.wrap(subject)
.click({ timeout: 100 })
.then(() => {
throw new Error(
"Expected element NOT to be clickable, but click() succeeded"
);
});
}
);
This is used in my tests like so
it.only("opens step settings drawer but doesn't allow changes", () => {
cy.visit("/myRoute");
Assertions above are all ran…
cy.get("button").shouldNotBeActionable();
…but assertions below aren't being ranenough-truck-68085
03/16/2023, 5:15 PMcy.get("button").should('be.disabled'); ?
I don't think you need a custom command to test a button isn't clickable but maybe I'm missing something else you want to validate.
https://docs.cypress.io/guides/references/assertionsvictorious-traffic-84253
03/17/2023, 9:10 AMshould('be.disabled') will definitely do the job but I'd prefer the custom command to have more confidence.