todos-contra-el-fuego-web/cucumber/features/steps_definitions/pages.js
2018-05-23 06:29:31 +02:00

81 lines
2.3 KiB
JavaScript

/* global module expect require process client */
const { goHome } = require('./helper.js');
// Does no works with arrow func
module.exports = function () {
let pages;
this.Given(/^a list of page ids and contents$/, (table, callback) => {
pages = table.raw();
callback();
});
function processPage(i) {
const id = `#${pages[i][0]}`;
const content = pages[i][1];
client.waitForVisible(id, 10000);
client.click(id);
client.waitUntilText('#react-root', content);
// https://jasmine.github.io/2.3/introduction.html#section-Expectations
expect(client.getTitle()).toContain(pages[i][1]);
}
function processPageUrl(i) {
const url = `${pages[i][0]}`;
const content = pages[i][1];
client.url(`${process.env.ROOT_URL}/${url}`);
client.waitForVisible('#react-root', 10000);
client.waitUntilText('#react-root', content);
const checkTitle = pages[i][2] === 'true';
// https://jasmine.github.io/2.3/introduction.html#section-Expectations
if (checkTitle) {
expect(client.getTitle()).toContain(pages[i][1]);
}
}
this.Given(/^a list of non visible pages ids and contents$/, (table, callback) => {
pages = table.raw();
callback();
});
this.Then(/^I check that all non visible pages works properly$/, (callback) => {
for (let i = 0; i < pages.length; i += 1) {
processPageUrl(i);
}
callback();
});
this.Then(/^I check that all pages works properly$/, (callback) => {
goHome(client);
if (client.isVisible('#logout')) {
client.click('#logout');
}
for (let i = 0; i < pages.length; i += 1) {
processPage(i);
}
callback();
});
this.Given(/^a list of page urls and contents$/, (table, callback) => {
pages = table.raw();
callback();
});
this.Then(/^I check that all page urls works properly$/, (callback) => {
goHome(client);
for (let i = 0; i < pages.length; i += 1) {
processPageUrl(i);
}
callback();
});
this.Then(/^they are spiderable$/, (callback) => {
// Write code here that turns the phrase above into concrete actions
for (let i = 0; i < pages.length; i += 1) {
client.url(`${process.env.ROOT_URL}/${pages[i][0]}?_escaped_fragment_=`);
client.waitUntilText('#react-root', pages[i][1]);
}
callback();
});
};