Open Billbastos opened 2 years ago
Hello.
We experienced the same problem upgrading to cypress v10+ and updating every dependencies.
Downgrading to CTL 7.0.7 solved it.
It looks like the regression was introduced in v8.0.0
@testing-library/dom has been upgraded to v8 -> might be ?
Hi, we also experienced this issue (it actually caused the tests to hang badly in our CI pipeline). The issue repro'd with versions v8.0.7 and v9 of testing-library/cypress (with Cypress 12.3.0 and 12.6.0)
Reverting to v7.0.7, as Fanch~ suggested above, resolved the issue, so it does look like it might be a bug introduced in v8.0.0
we just ran into the same issue using cypress 11.2.0 and testing-library/cypress 8.0.7. reverting it back to 7.0.7 per above suggestions seems to have worked as well. the cy.findByRole
and cy.findAllByText
commands were both hanging up the browser
strangely we've been on 8.0.7 since november and we only just started seeing this issue a day ago with no other changes that we can find.
i added this:
before(() => {
cy.configureCypressTestingLibrary({
getElementError(message, container) {
const error = new Error(
[message, container.tagName].filter(Boolean).join('\n\n'),
);
error.name = 'TestingLibraryElementError';
return error;
},
});
});
to prevent prettyDOM from being called and this seems to be working now with the newer versions of testing-library/cypress
Similar here. We use cypress 12.5.1
and @testing-library/cypress 9.0.0
. Everything worked fine until yesterday when the test hung on cy.findAllByTestId
and failed after the timeout. The issue happened only CI
. Overwriting the element error message, as @jessezhang91 suggested, seems to fix it. We added that as a global cypress configuration to cypress/support/e2e.ts
:
import { configure } from '@testing-library/cypress';
configure({
getElementError(message, container) {
const error = new Error(
[message, container.tagName].filter(Boolean).join('\n\n'),
);
error.name = 'TestingLibraryElementError';
return error;
},
});
It looks like when the testing library error occurs, it breaks the retry-ability of the cypress and fails after the timeout. I wonder why it was working before and suddenly stopped working without any lib updates 🤔
Had the same problem. It suddenly appeared yesterday. We use Cypress 9.7.0
, @testing-library/cypress 7.0.6
and @testing-library/dom 8.19.0
.
Your solution @patrykkarny fixed it (as well as @jessezhang91 solution).
Same problem, same fix, also suddenly started for us on 27/28 April. One thing I noticed is it seemed to freeze up whenever performing XHR requests.
We also hadn't upgraded any packages in our bundle, other than loading the latest Google Maps API dynamically via a script tag. Pinning the version to a couple releases ago fixed the error for a few tests involving maps requests.
Same thing here ("@testing-library/cypress": "^9.0.0", cypress: 12.5.0) but only triggers in the CI, probably because the CI is quicker and the command runs while the elements are not loaded yet.
Similar here. We use
cypress 12.5.1
and@testing-library/cypress 9.0.0
. Everything worked fine until yesterday when the test hung oncy.findAllByTestId
and failed after the timeout. The issue happened onlyCI
. Overwriting the element error message, as @jessezhang91 suggested, seems to fix it. We added that as a global cypress configuration tocypress/support/e2e.ts
:import { configure } from '@testing-library/cypress'; configure({ getElementError(message, container) { const error = new Error( [message, container.tagName].filter(Boolean).join('\n\n'), ); error.name = 'TestingLibraryElementError'; return error; }, });
It looks like when the testing library error occurs, it breaks the retry-ability of the cypress and fails after the timeout. I wonder why it was working before and suddenly stopped working without any lib updates 🤔
i added this:
before(() => { cy.configureCypressTestingLibrary({ getElementError(message, container) { const error = new Error( [message, container.tagName].filter(Boolean).join('\n\n'), ); error.name = 'TestingLibraryElementError'; return error; }, }); });
to prevent prettyDOM from being called and this seems to be working now with the newer versions of testing-library/cypress
Thanks a lot for the workaround!! @jessezhang91
Hello.
Maybe related issue: https://github.com/testing-library/dom-testing-library/issues/44
When running e2e tests for my navigation component on chrome I am getting the following error
cypress-testing-library
version: 8.0.3node
version: v14.18.3yarn
version: 3.2.3axe-core
version: ^4.5.0cypress
version: ^10.10.0cypress-axe
version: ^1.0.0typescript
version: ^4.7.3Relevant code or config
What you did:
cy.findByRole('dialog')
is called. I realized that if I add acy.wait(500)
beforecy.findByRole('dialog')
it works, but that is not a great solution for sure.cy.get('[data-testid="loader"]').should('not.exist')
Suggested solution: