I have a test which each time I run it, throws "UnknownError: unknown error: Maximum call stack size exceeded. "
This test is calling a method in one of my services which writes to Google Drive.
The test that is failing is calling my doDrive function with "ui", meaning update a Drive item. If I change a single character "ui" -> "ni", meaning create a new Drive item, the test works. The code under test works fine in normal use.
it('should update a file', function() {
browser.executeAsyncScript(function(callback) {
// get service
var service=angular.element(document.getElementById('ngapp')).injector().get('DriveQ')
// generate a title
var title = 'title of file';
// call doDrive to create a new file
service.doDrive({t:'ui',id:'0B6B-RNrxsCu2Sll7JZTYy2aDA', item:{title:title}})
.then(function (resp){
resp.originalTitle=title;
callback(resp)
});
}).then(function(resp) {
expect(resp.title).toEqual(resp.originalTitle);
});
});
I'm using the chrome webdriver directly, and I also have browser.ignoreSynchronization = true;
I'm having the same issue. I've found that returning big objects from the browser to protractor leads to the "UnknownError: unknown error: Maximum call stack size exceeded" error.
You should check the complexity of the resp
object you're sending back with the callback. If it's too big, try to send back less data.
This can happen with executeAsyncScript
, executeScript
and evaluate
(which use executeScript
).
Edit by OP...
Fixed by changing callback(resp)
to callback({title:resp.title})
, ie simplifying the returned object to contain only those items that I am aserting.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With