cy.then()
timed out after waiting 30000ms
. Your callback function returned a promise that never resolved. The callback function was: function ($frame) { return __awaiter(_this, void 0, void 0, function () { var contentWindow, hasNavigated, loadLog; var _a, _b; return __generator(this, function (_c) { switch (_c.label) { case 0: (_a = log) === null || _a === void 0 ? void 0 : _a.set(‘$el’, $frame); if ($frame.length !== 1) { throw new Error(“cypress-iframe commands can only be applied to exactly one iframe at a time. Instead found ” + $frame.length); } contentWindow = $frame.prop(‘contentWindow’); hasNavigated = fullOpts.url ? function () { var _a; return typeof fullOpts.url === ‘string’ ? contentWindow.location.toString().includes(fullOpts.url) : (_a = fullOpts.url) === null || _a === void 0 ? void 0 : _a.test(contentWindow.location.toString()); } : function () { return contentWindow.location.toString() !== ‘about:blank’; }; _c.label = 1; case 1: if (!!hasNavigated()) return [3, 3]; return [4, sleep(100)]; case 2: _c.sent(); return [3, 1]; case 3: if (contentWindow.document.readyState === ‘complete’) { return [2, $frame]; } loadLog = Cypress.log({ name: ‘Frame Load’, message: [contentWindow.location.toString()], event: true, }).snapshot(); return [4, new Promise(function (resolve) { Cypress.$(contentWindow).on(‘load’, resolve); })]; case 4: _c.sent(); loadLog.end(); (_b = log) === null || _b === void 0 ? void 0 : _b.finish(); return [2, $frame]; } }); }); }
Your callback function returned a promise that never resolved
Share
This is an error message that can occur when using Cypress, a JavaScript-based end-to-end testing framework. The error message suggests that Cypress is unable to complete a certain command because a promise that was returned by a callback function never resolved.
The specific error message is related to the
cy.then()
command, which is used to chain together multiple Cypress commands. It seems that the callback function passed to thecy.then()
command returned a promise that never resolved.There are a few possible reasons why this might happen:
To resolve this issue, you should check the callback function and make sure that it is properly resolving or rejecting the promise. You can also try using Cypress’s built-in
.catch()
method to handle any errors that occur within the callback function.Additionally, you can try to wrap the callback function inside another promise and use
.then()
to catch any errors and make sure that the promise is resolved with a Cypress object.It’s also important
to check that the element that the callback function is trying to interact with is still present in the DOM, as this error can also occur if the element is no longer present.
It is recommended to check the application code and see if the iframe navigates to a new url or changes its location before the cypress command is executed.
It’s also important to note that this error message is related to specific code that seems to be a custom Cypress command, it’s recommended to check the code and see if there’s any issue with the logic of the command and the way it’s being used.