diff --git a/webapp/e2e/jest.config.js b/webapp/e2e/jest.config.js index 2112e935..e2c70824 100644 --- a/webapp/e2e/jest.config.js +++ b/webapp/e2e/jest.config.js @@ -1,5 +1,5 @@ module.exports = { - testMatch: ["**/playing_full_game_pos*.steps.js","**/about.steps.js", "**/login_positive.steps.js","**/about_positive_logged_user_seeing_about_screen.steps.js" + testMatch: ["**/playing_full_game_pos*.steps.js","**/login_register_negative_bad_email_format.steps.js", "**/login_positive.steps.js","**/about_positive_logged_user_seeing_about_screen.steps.js" ,"**/about_positive_non_logged_user_seeing_about_screen.steps.js"], moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json", "node"], testTimeout: 30000 diff --git a/webapp/e2e/steps/about.steps.js b/webapp/e2e/steps/about.steps.js deleted file mode 100644 index ef5e2077..00000000 --- a/webapp/e2e/steps/about.steps.js +++ /dev/null @@ -1,77 +0,0 @@ -const { defineFeature, loadFeature }=require('jest-cucumber'); -const puppeteer = require('puppeteer'); -const setDefaultOptions = require("expect-puppeteer").setDefaultOptions; -const feature = loadFeature('./features/about_features/positive_logged_user_seeing_about_screen.feature'); -let page; -let browser; - -defineFeature(feature, test => { - - beforeAll(async () => { - browser = process.env.GITHUB_ACTIONS - ? await puppeteer.launch({ ignoreHTTPSErrors: true}) - : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); - page = await browser.newPage(); - //Way of setting up the timeout - setDefaultOptions({ timeout: 10000 }) - - await page - .goto("http://localhost:3000", { - waitUntil: "networkidle0", - }) - .catch(() => {}); - }); - - test("A logged user wants to see the about screen of the webpage", ({given,when,and,then}) => { - - let username = "t.about"; - - given("A logged user in the main menu", async () => { - await registerUserFromRootDirectory(username,page) - }); - - when("The user presses the button for deploying the lateral menu", async () => { - await expect(page).toClick("#lateralMenuButton"); - }); - - and("the user presses the button for seeing the about section (i)", async () => { - await expect(page).toClick("#aboutButton"); - }); - - then("The user is presented to the about screen", async () => { - let header = await page.$eval("h2", (element) => { - return element.innerHTML - }) - let value = header === "About" || header === "Sobre nosotros"; - expect(value).toBeTruthy(); - }); - }); - - afterAll((done) => { - done(); - }); -}); - -async function registerUserFromRootDirectory(username, page) { - // Credentials for the new user - let email = username + "@email.com" - let password = username + "psw" - - // Registering process - await expect(page).toClick("span[class='chakra-link css-1bicqx'"); - await expect(page).toFill("input[id='user'", email); - await expect(page).toFill("input[id='username'", username); - await expect(page).toFill("#password", password); - await expect(page).toFill("input[id='field-:r5:']", password); - await expect(page).toClick("button[data-testid='Sign up'"); - - // Checking for the process to be correct - await new Promise(resolve => setTimeout(resolve, 5000)); // Waiting for page to fully load - let header = await page.$eval("h2", (element) => { - return element.innerHTML - }) - let value = header === "Bienvenid@ " + username || header === "Welcome " + username; - expect(value).toBeTruthy(); - - return [email, password]; -} diff --git a/webapp/e2e/steps/login_register_negative_bad_email_format.steps.js b/webapp/e2e/steps/login_register_negative_bad_email_format.steps.js index 35b2d091..aa5665fb 100644 --- a/webapp/e2e/steps/login_register_negative_bad_email_format.steps.js +++ b/webapp/e2e/steps/login_register_negative_bad_email_format.steps.js @@ -1,5 +1,3 @@ -import { waitForPageToLoad } from '../e2e_utils/e2e_utils_timeout.js'; - const { defineFeature, loadFeature }=require('jest-cucumber'); const puppeteer = require('puppeteer'); const setDefaultOptions = require("expect-puppeteer").setDefaultOptions; @@ -9,15 +7,14 @@ let browser; defineFeature(feature, test => { - let username = "t.login.neg.bad_em" - let user; - let password; + let username = "t.login.neg.bad.em" + let password = username + "psw" ; beforeAll(async () => { browser = process.env.GITHUB_ACTIONS - ? await puppeteer.launch() - : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); + ? await puppeteer.launch({ ignoreHTTPSErrors: true}) + : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true}); page = await browser.newPage(); //Way of setting up the timeout setDefaultOptions({ timeout: 10000 }) @@ -27,13 +24,19 @@ defineFeature(feature, test => { waitUntil: "networkidle0", }) .catch(() => {}); - + + // Registering the user before the tests + await registerUserFromRootDirectory(username, page); + + // Logging it out + await logOutUser(page); + }, 120000); test("A registered user wants to log in using his credentials but with an invalid email", ({given,when,and,then}) => { given('A registered user in the root screen', async () => { - waitForPageToLoad(); + await new Promise(resolve => setTimeout(resolve, 5000)); // Waiting for page to fully load let header = await page.$eval("button[data-testid='Login']", (element) => { return element.innerHTML }) @@ -47,7 +50,7 @@ defineFeature(feature, test => { }); and('User enters in the log in screen', async() => { - waitForPageToLoad(); + await new Promise(resolve => setTimeout(resolve, 5000)); // Waiting for page to fully load let header = await page.$eval("h2", (element) => { return element.innerHTML }) @@ -57,7 +60,7 @@ defineFeature(feature, test => { }); and('User fills the form with his proper password but writes a wrong formatted email', async() => { - await expect(page).toFill("#user", user); + await expect(page).toFill("#user", username + "a"); await expect(page).toFill("#password", password); }); @@ -66,7 +69,7 @@ defineFeature(feature, test => { }); then('Log in screen shows an informative error message and does not allow the user to log in', async() => { - waitForPageToLoad(); + await new Promise(resolve => setTimeout(resolve, 5000)); // Waiting for page to fully load let header = await page.$eval("div[class='chakra-alert__desc css-zzks76'", (element) => { return element.innerHTML }) @@ -81,4 +84,43 @@ defineFeature(feature, test => { done(); browser.close(); }); -}); \ No newline at end of file +}); +async function registerUserFromRootDirectory(username, page) { + // Credentials for the new user + let email = username + "@email.com" + let password = username + "psw" + + // Registering process + await expect(page).toClick("span[class='chakra-link css-1bicqx'"); + await expect(page).toFill("input[id='user'", email); + await expect(page).toFill("input[id='username'", username); + await expect(page).toFill("#password", password); + await expect(page).toFill("input[id='field-:r5:']", password); + await expect(page).toClick("button[data-testid='Sign up'"); + + // Checking for the process to be correct + await new Promise(resolve => setTimeout(resolve, 5000)); // Waiting for page to fully load + let header = await page.$eval("h2", (element) => { + return element.innerHTML + }) + let value = header === "Bienvenid@ " + username || header === "Welcome " + username; + expect(value).toBeTruthy(); + + return [email, password]; +} + +async function logOutUser(page) { + // Logging out + await expect(page).toClick("#lateralMenuButton"); + await new Promise(resolve => setTimeout(resolve, 5000)); + await expect(page).toClick("button[data-testid='LogOut']"); + + // Checking for the log out to be sucessful + await new Promise(resolve => setTimeout(resolve, 5000)); + let header = await page.$eval("button[data-testid='Login']", (element) => { + return element.innerHTML + }) + let value = header === "Login" || "Iniciar sesiĆ³n"; + + expect(value).toBeTruthy(); +} \ No newline at end of file