UNPKG

skutter

Version:

Skutter: Opinionated BDD Browser based test framework

47 lines (35 loc) 1.54 kB
import * as Lazy from "lazy.js"; import { Page } from "skutter"; class Pages { private pageFiles: string[] = [ "./github-landing", "./github-search-results" ]; private _pages: Page[] = []; find(pageName: string): Page { this.ensureLoaded(); let page = Lazy(this._pages).find((page: Page) => { return page.name === pageName; }); if (page === undefined || page === null) { let availablePages = this._pages.map((page: Page) => { return page.name; }).join(", "); if (availablePages.length > 0) { throw new Error(`Unable to find a page with the name "${pageName}". Available pages [${availablePages}]`); } throw new Error(`Unable to find a page with the name "${pageName}". There don't appear to be any pages registered.`); } return page; } private ensureLoaded(): void { if (!this._pages || this._pages.length != this.pageFiles.length) { Lazy(this.pageFiles).each((filename: string) => { try { // Pages must be 'export { xxx as default }' in order to be loaded correctly here. let page = require(filename).default; this._pages.push(page); } catch (exception) { throw new Error(`Error during load of ${filename}. Message: ${exception.message}.`); } }); } } } export { Pages };