我们的 Angular 应用程序包含不同的页面,其中一个显示与mapbox-gl-js集成的地图。
由于我们集成了 mapbox,我们的量角器 e2e 测试失败。一旦测试到达显示地图的页面,下一次单击同一页面上的任何其他 HTML 元素会导致以下错误:超时 - 在 jasmine.DEFAULT_TIMEOUT_INTERVAL 指定的超时内未调用异步回调。
在测试之前工作得很好。
看来,量角器在页面上找不到任何 HTML 元素进行验证。唯一可能的方法是单击页面上的另一个元素,然后页面会冻结,直到发生超时错误。
例如:
- e2e-test到达地图
- 我可以点击带有地图的页面上的按钮
- 超时错误
对此的任何帮助将不胜感激。
// the map.component.html
<div class="container">
<div #map id="map" class="dt-map"></div>
</div>
// the dt-map.component.js
@Component({
selector: 'dt-map',
templateUrl: './dt-map.component.html',
styleUrls: ['./dt-map.component.scss'],
})
export class DtMapComponent implements AfterViewInit, OnDestroy {
public map: mapboxgl.Map;
@ViewChild('map')
public mapElement: ElementRef;
constructor(private dtMapService: DtMapService) {
}
public ngAfterViewInit(): void {
this.map = this.dtMapService.getDtMap();
}
}
// the working e2e test
expect(await page.isMapVisible()).toBe(true, `MapBox is not visible`);
public async isMapVisible(): Promise<boolean> {
const el = await element(by.css('.mapboxgl-map'));
await Expection.visibilityOf(el);
return await el.isDisplayed();
}