blob: cd238d38f7734e555436184914761cab383b5354 [file] [log] [blame]
import { PageObjectElement } from './page_object_element';
import { TestBed, describePageObjectElement } from './page_object_element_test_cases';
import { Serializable } from 'puppeteer';
describe('PageObjectElement on the browser', () => {
// This div will contain the top-level element in the HTML provided via the test bed.
let container: HTMLDivElement;
before(() => {
// The container's innerHTML will be overwritten at the beginning of each test case.
container = document.createElement('div');
document.body.appendChild(container);
});
after(() => { container.remove(); });
const testBed: TestBed = {
setUpPageObjectElement: (html: string): Promise<PageObjectElement> => {
container.innerHTML = html;
// Make sure there is only one top-level element.
if (container.childElementCount !== 1) {
throw new Error('the given HTML contains more than one top-level element');
}
// Retrieve the top-level element and wrap it inside a PageObjectElement.
const element = container.firstElementChild as HTMLElement;
return Promise.resolve(new PageObjectElement(element));
},
evaluate: <T extends Serializable | void = void>(fn: (el: HTMLElement) => T) => {
return Promise.resolve(fn(container.firstElementChild as HTMLElement));
}
};
describePageObjectElement(testBed);
});