cucumber-protractor
Version:
POM CukeTractor - Bootstrap your cucumber tests with cucumber, protractor and a structured way of creating page objects and component objects
32 lines (28 loc) • 1.18 kB
JavaScript
module.exports = function checkUrl(isNot, expectedUrl) {
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 ((!isNot && (currentUrlNoTrailingSlash === expectedUrlNoTrailingSlash)) ||
(isNot && currentUrlNoTrailingSlash !== expectedUrlNoTrailingSlash)) {
resolve();
} else if (Date.now() > timestamp + waitTimeout) {
reject();
} else {
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);
});
};