Improved cucumber tests

This commit is contained in:
vjrj 2018-05-23 06:29:31 +02:00
parent b53e5d0e36
commit b54707f2dc
6 changed files with 49 additions and 18 deletions

View file

@ -1,4 +1,3 @@
@watch
Feature: Allow users to login and logout Feature: Allow users to login and logout
As a user As a user

View file

@ -10,8 +10,9 @@ Feature: Test all secundary pages
| about | About | | about | About |
Then I check that all pages works properly Then I check that all pages works properly
Scenario: Check that all secondary pages work well Scenario: Check that all secondary pages work well when not logged
Given a list of page urls and contents Given I logout if logged
And a list of page urls and contents
| login | Login | true | | login | Login | true |
| signup | Sign Up | true | | signup | Sign Up | true |
| fires | Fires | true | | fires | Fires | true |
@ -21,12 +22,26 @@ Feature: Test all secundary pages
| fire/inexistent | This page doesn't exist | false | | fire/inexistent | This page doesn't exist | false |
| fire/Fe26.2**1a0361ed0384f741403682e26b4bbc3850bee24e775da13c9782b22365ea895f*r_3gmVad5vzkeyqPpo6UcA*1s5fFz3iDGKTYP2RCvXMshof00QCHf4ErDl9K2dxoX0u-J-t6scyOWG8pGp3ehg_FfEtyR_kYcEKU3rE0jaSlZbD09TIvhiIJeS3C6Uc8YD-rit0XBrgsVKfYSxKzTRoOYiYFJ8JYd298hMtfiASePjS05Z58hhicyCcJYYRlarqDScG3LiVY3lL5y2nfcdIMNuSjCiKOJWuMkxwd9nR1UHMudLl0hEoy56mPdnHpDYtP9IYUlIOk1LlWBxcmHKifbXeqHu94p8j13Kk20dh2R49Hw3KsSoE9UbWmGQA9wAZXT82301i3rGF5GPAKjlTlRYcWisQurnPwHSVmx3DhUdiYwKGxt4KeaM5QVI4BE9octvE41OOprB_-Il105diQEh2Y9vdvX51ZVWIRfCboICPM6rJb0Oin7U7F1iM-oD_5s3DGnelfM5LGBcKwiB5paMo5M5vdBMaO-zR216cW9yGVXw9IZqHx8xDQWnoHAZjt8NLHeiGF2QOmIGtEUH7qnwhGpkcvszajmAZzR8saZgoH1qfBfvpVA41YfV14gU**4d030f05e23ad75409cebc609107467fc60be5077d52cf041087cd024fc4dc45*GY97aGFc1MyAsoO3Qxqtgwk9j-MbAPdEGBmEHq6r8VU | Additional information | false | | fire/Fe26.2**1a0361ed0384f741403682e26b4bbc3850bee24e775da13c9782b22365ea895f*r_3gmVad5vzkeyqPpo6UcA*1s5fFz3iDGKTYP2RCvXMshof00QCHf4ErDl9K2dxoX0u-J-t6scyOWG8pGp3ehg_FfEtyR_kYcEKU3rE0jaSlZbD09TIvhiIJeS3C6Uc8YD-rit0XBrgsVKfYSxKzTRoOYiYFJ8JYd298hMtfiASePjS05Z58hhicyCcJYYRlarqDScG3LiVY3lL5y2nfcdIMNuSjCiKOJWuMkxwd9nR1UHMudLl0hEoy56mPdnHpDYtP9IYUlIOk1LlWBxcmHKifbXeqHu94p8j13Kk20dh2R49Hw3KsSoE9UbWmGQA9wAZXT82301i3rGF5GPAKjlTlRYcWisQurnPwHSVmx3DhUdiYwKGxt4KeaM5QVI4BE9octvE41OOprB_-Il105diQEh2Y9vdvX51ZVWIRfCboICPM6rJb0Oin7U7F1iM-oD_5s3DGnelfM5LGBcKwiB5paMo5M5vdBMaO-zR216cW9yGVXw9IZqHx8xDQWnoHAZjt8NLHeiGF2QOmIGtEUH7qnwhGpkcvszajmAZzR8saZgoH1qfBfvpVA41YfV14gU**4d030f05e23ad75409cebc609107467fc60be5077d52cf041087cd024fc4dc45*GY97aGFc1MyAsoO3Qxqtgwk9j-MbAPdEGBmEHq6r8VU | Additional information | false |
Then I check that all page urls works properly Then I check that all page urls works properly
# And they are spiderable # And they are spiderable
@watch
Scenario: Check that all secondary pages work well when logged
Given I have an account and I logged in
And a list of page urls and contents
| status | Status | false |
| fires | Fires | true |
| zones | Monitored | true |
| verify-email/something | Verify | true |
| fire/inexistent | This page doesn't exist | false |
| fire/Fe26.2**1a0361ed0384f741403682e26b4bbc3850bee24e775da13c9782b22365ea895f*r_3gmVad5vzkeyqPpo6UcA*1s5fFz3iDGKTYP2RCvXMshof00QCHf4ErDl9K2dxoX0u-J-t6scyOWG8pGp3ehg_FfEtyR_kYcEKU3rE0jaSlZbD09TIvhiIJeS3C6Uc8YD-rit0XBrgsVKfYSxKzTRoOYiYFJ8JYd298hMtfiASePjS05Z58hhicyCcJYYRlarqDScG3LiVY3lL5y2nfcdIMNuSjCiKOJWuMkxwd9nR1UHMudLl0hEoy56mPdnHpDYtP9IYUlIOk1LlWBxcmHKifbXeqHu94p8j13Kk20dh2R49Hw3KsSoE9UbWmGQA9wAZXT82301i3rGF5GPAKjlTlRYcWisQurnPwHSVmx3DhUdiYwKGxt4KeaM5QVI4BE9octvE41OOprB_-Il105diQEh2Y9vdvX51ZVWIRfCboICPM6rJb0Oin7U7F1iM-oD_5s3DGnelfM5LGBcKwiB5paMo5M5vdBMaO-zR216cW9yGVXw9IZqHx8xDQWnoHAZjt8NLHeiGF2QOmIGtEUH7qnwhGpkcvszajmAZzR8saZgoH1qfBfvpVA41YfV14gU**4d030f05e23ad75409cebc609107467fc60be5077d52cf041087cd024fc4dc45*GY97aGFc1MyAsoO3Qxqtgwk9j-MbAPdEGBmEHq6r8VU | Additional information | false |
Then I check that all page urls works properly
@watch
Scenario: Check that other non visible pages work well Scenario: Check that other non visible pages work well
Given a list of non visible pages ids and contents Given I logout if logged
| status | Status | And a list of non visible pages ids and contents
| error | Upps | | error | Upppps | false |
# FIXME: find a way to monitor json pages # FIXME: find a way to monitor json pages
# | api/v1/status/last-fire-detected | updateAt | # | api/v1/status/last-fire-detected | updateAt |
# | api/v1/status/last-fire-check | description | # | api/v1/status/last-fire-check | description |

View file

@ -24,6 +24,7 @@ module.exports = function doSteps() {
client.waitForVisible('#feedback-tab', 10000); client.waitForVisible('#feedback-tab', 10000);
client.click('#feedback-tab'); client.click('#feedback-tab');
client.waitForVisible('#feedback-form', 10000); client.waitForVisible('#feedback-form', 10000);
client.waitForEnabled('input[name="email"]');
client.setValue('input[name="email"]', randomEmail()); client.setValue('input[name="email"]', randomEmail());
client.setValue('#feedbackTextarea', randomText(500)); client.setValue('#feedbackTextarea', randomText(500));
client.click('#sendFeedbackBtn'); client.click('#sendFeedbackBtn');

View file

@ -11,6 +11,14 @@
this.waitForVisible(selector, timeout); this.waitForVisible(selector, timeout);
this.waitForEnabled(selector, timeout); this.waitForEnabled(selector, timeout);
}); });
client.addCommand('waitUntilText', function waitUntilText(selector, text, ms) {
ms = ms || 5000;
this.waitForVisible(selector);
const self = this;
this.waitUntil(() => self.getText(selector).includes(text), ms, `expected text in ${selector} be different after ${ms / 1000}s. Obtained: '${self.getText(selector)}' expected: '${text}'`);
});
this.initMyCmds = true; this.initMyCmds = true;
} }

View file

@ -35,35 +35,46 @@ module.exports = function doSteps(notos) {
function waitNoBert() { function waitNoBert() {
client.pause(2000); client.pause(2000);
if (client.isVisible('.bert-container')) { if (client.isVisible('.bert-container')) {
console.log('Removing bert alert'); // console.log('Removing bert alert');
client.click('.bert-container'); client.click('.bert-container');
client.waitForVisible('.bert-container', 10000, true); client.waitForVisible('.bert-container', 10000, true);
} else { } else {
console.log('No bert alert'); // console.log('No bert alert');
} }
} }
function register() { function logoutIfLogged() {
if (client.isVisible('#logout')) { if (client.isVisible('#logout')) {
client.click('#logout'); client.click('#logout');
} }
client.waitForVisible('#signup', 10000); client.waitForVisible('#signup', 10000);
}
function register() {
logoutIfLogged();
client.waitForVisible('#signup', 10000);
client.click('#signup'); client.click('#signup');
setUserValues(); setUserValues();
if (!notos) { if (!notos) {
client.click('input[name="tos"]'); client.click('input[name="tos"]');
} }
client.click('#signUpSubmit'); client.click('#signUpSubmit');
client.waitForVisible('#logout', 10000);
} }
this.Given(/^I logout if logged$/, () => {
waitNoBert();
logoutIfLogged();
});
this.Given(/^I have an account and I logged in$/, () => { this.Given(/^I have an account and I logged in$/, () => {
register(); register();
}); });
function checkName() { function checkName() {
client.waitForVisible('#profile', 5000); client.waitForVisible('#profile', 5000);
client.waitForText('#profile', firstName); client.waitUntilText('#profile', firstName);
client.waitForText('#profile', lastName); client.waitUntilText('#profile', lastName);
} }
this.Then(/^I should be logged in$/, () => { this.Then(/^I should be logged in$/, () => {

View file

@ -16,7 +16,7 @@ module.exports = function () {
const content = pages[i][1]; const content = pages[i][1];
client.waitForVisible(id, 10000); client.waitForVisible(id, 10000);
client.click(id); client.click(id);
client.waitForText('#react-root', content); client.waitUntilText('#react-root', content);
// https://jasmine.github.io/2.3/introduction.html#section-Expectations // https://jasmine.github.io/2.3/introduction.html#section-Expectations
expect(client.getTitle()).toContain(pages[i][1]); expect(client.getTitle()).toContain(pages[i][1]);
} }
@ -26,7 +26,7 @@ module.exports = function () {
const content = pages[i][1]; const content = pages[i][1];
client.url(`${process.env.ROOT_URL}/${url}`); client.url(`${process.env.ROOT_URL}/${url}`);
client.waitForVisible('#react-root', 10000); client.waitForVisible('#react-root', 10000);
client.waitForText('#react-root', content); client.waitUntilText('#react-root', content);
const checkTitle = pages[i][2] === 'true'; const checkTitle = pages[i][2] === 'true';
// https://jasmine.github.io/2.3/introduction.html#section-Expectations // https://jasmine.github.io/2.3/introduction.html#section-Expectations
if (checkTitle) { if (checkTitle) {
@ -41,10 +41,7 @@ module.exports = function () {
this.Then(/^I check that all non visible pages works properly$/, (callback) => { this.Then(/^I check that all non visible pages works properly$/, (callback) => {
for (let i = 0; i < pages.length; i += 1) { for (let i = 0; i < pages.length; i += 1) {
client.url(`${process.env.ROOT_URL}/${pages[i][0]}`); processPageUrl(i);
const content = pages[i][1];
client.waitForVisible('#react-root', 10000);
client.waitForText('#react-root', content);
} }
callback(); callback();
}); });
@ -77,7 +74,7 @@ module.exports = function () {
// Write code here that turns the phrase above into concrete actions // Write code here that turns the phrase above into concrete actions
for (let i = 0; i < pages.length; i += 1) { for (let i = 0; i < pages.length; i += 1) {
client.url(`${process.env.ROOT_URL}/${pages[i][0]}?_escaped_fragment_=`); client.url(`${process.env.ROOT_URL}/${pages[i][0]}?_escaped_fragment_=`);
client.waitForText('#react-root', pages[i][1]); client.waitUntilText('#react-root', pages[i][1]);
} }
callback(); callback();
}); });