Angular-google-maps: Integration with testability API

Created on 23 Dec 2016  路  7Comments  路  Source: SebastianM/angular-google-maps

Issue description
I'm doing end-to-end testing of my app (that uses angular2-google-maps).

I'm resorting to the testability API of Angular, to wait for angular to be stable before doing my actions (just like protractor does), i.e. I wait for

window.getAllAngularTestabilities()[0].isStable()

to return true.

It seems angular2-google-maps often leaves pending tasks in the zone (hard to debug, as there is no API to inspect the pending tasks, see https://github.com/angular/angular/issues/8219). Hence it is never stable, and my tests are blocked.

It would be nice to make sure there are no pending tasks in the zone, e.g. make sure setTimeout is wrapped in a _zone.runOutsideAngular call when necessary.

I guess the same applies to all the calls in the wrapper to the Google API. Logic by the Google code should run outside of the zone.

angular2 & angular2-google-maps version
1.6.0 (but I guess it happens just the same with newer versions).

AgmMap stale feature-request

Most helpful comment

Hey, has there been any progress into this?

All 7 comments

@rcomblen thanks for the report. This is really hard to debug. I'm skeptical that a runOutsideAngular is enough because the google maps API has also some setTimeout calls and other async stuff that gets executed automatically by Zone.JS. Do you have the time to test this with the native google maps api and see if it gets stable when you wrap all calls to the maps api?

@SebastianM I cannot promise I'll find the time for that :-(

Having the same issue, but with angular 6 and using Protractor. Protractor times out because it is waiting for all the async tasks to finish which for google maps don't finish causing it to time out and break my e2e tests

In my instance, there is a setTimeout of 25 seconds coming from the Google Maps API's common.js file. I had to increase the timeout of my tests significantly even though I don't think the setTimeout call back did anything (hard to tell, it's minimized code). Anyway this can run outside the Angular zone?

Same issue here. Have to bump up the timeout to 40 seconds for the setTimeOut() to finish and the zone get stable. Obviously, it adds a lot of time to my e2e tests.

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

Hey, has there been any progress into this?

Was this page helpful?
0 / 5 - 0 ratings

Related issues

maneesht picture maneesht  路  3Comments

DeveloperAdd007 picture DeveloperAdd007  路  3Comments

gizm0bill picture gizm0bill  路  4Comments

supran2811 picture supran2811  路  4Comments

n1t3w0lf picture n1t3w0lf  路  3Comments