tl;dr
Cypress commands are asynchronous, you have to use then
to work with their yields.
cy.url().then(url => {
cy.get('.editor-toolbar-actions-save').click();
cy.url().should('not.eq', url);
});
Explanation
A similar question was asked on GitHub, and the official document on aliases explains this phenomenon in great detail:
You cannot assign or work with the return values of any Cypress command. Commands are enqueued and run asynchronously.
The solution is shown too:
To access what each Cypress command yields you use
.then()
.cy.get('button').then(($btn) => { // $btn is the object that the previous // command yielded us })
It is also a good idea to check out the core concepts docs’s section on asynchronicity.