Files
angular__angular/e2e/util/query.ts
T
Kristiyan Kostadinov 6842046979 feat(overlay): add scroll blocking strategy (#4500)
Adds the `BlockScrollStrategy` which, when activated, will prevent the user from scrolling. For now it is only used in the dialog.

Relates to #4093.
2017-05-15 14:28:30 -07:00

37 lines
1.1 KiB
TypeScript

import {ElementFinder, by, element, ProtractorBy, browser} from 'protractor';
import {Point} from './actions';
/**
* Normalizes either turning a selector into an
* ElementFinder or returning the finder itself.
*/
export function getElement(el: FinderResult): ElementFinder {
return typeof el === 'string' ? element(by.css(el)) : el;
}
/**
* Waits for an element to be rendered.
*/
export function waitForElement(selector: string) {
return browser.isElementPresent(by.css(selector) as ProtractorBy);
}
/**
* Determines the current scroll position of the page.
*/
export async function getScrollPosition(): Promise<Point> {
const snippet = `
var documentRect = document.documentElement.getBoundingClientRect();
var x = -documentRect.left || document.body.scrollLeft || window.scrollX ||
document.documentElement.scrollLeft || 0;
var y = -documentRect.top || document.body.scrollTop || window.scrollY ||
document.documentElement.scrollTop || 0;
return {x: x, y: y};
`;
return await browser.executeScript<Point>(snippet);
}
export type FinderResult = ElementFinder | string;