UNPKG

cucumber-protractor

Version:

POM CukeTractor - Bootstrap your cucumber tests with cucumber, protractor and a structured way of creating page objects and component objects

41 lines (34 loc) 1.41 kB
module.exports = function checkUrl(pageName) { // update the page object const newPageObject = this.getPage(pageName); if (newPageObject.getPagePath() === undefined) { // don't bother to assert the page path if no page path exists return Promise.resolve(); } // continue to assert the page path if a page path exists const expectedUrl = newPageObject.getPageFullUrl(); const waitTimeout = this.cucumberTimeout || 3000; let currentUrlNoTrailingSlash; const expectedUrlNoTrailingSlash = expectedUrl.replace(/\/$/, ''); const timestamp = Date.now(); return new Promise((resolve, reject) => { const pageUrlMatches = () => browser.getCurrentUrl() .then((currentUrl) => { currentUrlNoTrailingSlash = currentUrl.replace(/\/$/, ''); if (currentUrlNoTrailingSlash === expectedUrlNoTrailingSlash) { resolve(); } else if (Date.now() > ((timestamp + waitTimeout) - 100)) { reject(); } pageUrlMatches(); }); pageUrlMatches(); }) .catch(() => { console.log('Current URL doesn’t match that in page object'); console.log('Current URL: ', currentUrlNoTrailingSlash); console.log('Expected URL: ', expectedUrlNoTrailingSlash); const err = `Current URL: ${currentUrlNoTrailingSlash} ... Expected URL: ${expectedUrlNoTrailingSlash}`; return Promise.reject(err); }); };