From 2473a7c7df0cf815017c01cf90ee1558e1c10671 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Su=C3=A1rez=20Losada?= Date: Sun, 5 May 2024 16:30:52 +0200 Subject: [PATCH 01/24] test: added timeout to before all --- ...e_logged_user_seeing_about_screen.steps.js | 36 +++++++----- ...n_logged_user_seeing_about_screen.steps.js | 17 +++++- ...egister_negative_bad_email_format.steps.js | 18 +++--- ..._negative_blank_email_credentials.steps.js | 17 +++--- ...gative_blank_password_credentials.steps.js | 18 +++--- ...er_negative_incorrect_credentials.steps.js | 17 +++--- .../logout_positive_logged_user.steps.js | 32 ++++++----- .../logout_positive_non_logged_user.steps.js | 14 ++++- .../steps/playing_full_game_positive.steps.js | 2 +- ...ing_game_negative_non_logged_user.steps.js | 15 ++++- .../register_negative_blank_password.steps.js | 26 ++++----- ..._negative_blank_repeated_password.steps.js | 28 ++++------ .../register_negative_blank_username.steps.js | 18 ++++-- ...egative_email_already_in_use_form.steps.js | 24 ++++---- ...tive_username_already_in_use_form.steps.js | 17 ++++-- ...ister_negative_wrong_email_format.steps.js | 55 +++++++++++++------ .../e2e/steps/register_positive_form.steps.js | 3 +- ...ng_rules_negative_non_logged_user.steps.js | 19 ++++--- .../e2e/steps/seeing_rules_positive.steps.js | 20 ++++--- ...ng_stats_negative_non_logged_user.steps.js | 19 ++++--- .../e2e/steps/seeing_stats_positive.steps.js | 15 +++-- 21 files changed, 261 insertions(+), 169 deletions(-) diff --git a/webapp/e2e/steps/about_positive_logged_user_seeing_about_screen.steps.js b/webapp/e2e/steps/about_positive_logged_user_seeing_about_screen.steps.js index d0015e4c..975b6439 100644 --- a/webapp/e2e/steps/about_positive_logged_user_seeing_about_screen.steps.js +++ b/webapp/e2e/steps/about_positive_logged_user_seeing_about_screen.steps.js @@ -1,3 +1,8 @@ + +const {registerUserFromRootDirectory} = require('../e2e_utils/e2e_utils_register.js'); +const {waitForPageToLoad} = require('../e2e_utils/e2e_utils_timeout.js'); +const {logOutUser} = require('../e2e_utils/e2e_utils_logout.js'); +const {loginUserFromRootDirectory} = require('../e2e_utils/e2e_utils_login.js'); const { defineFeature, loadFeature }=require('jest-cucumber'); const puppeteer = require('puppeteer'); const setDefaultOptions = require("expect-puppeteer").setDefaultOptions; @@ -7,6 +12,9 @@ let browser; defineFeature(feature, test => { + let username = "t.about.pos"; + let email; + let password; beforeAll(async () => { browser = process.env.GITHUB_ACTIONS @@ -21,21 +29,21 @@ defineFeature(feature, test => { waitUntil: "networkidle0", }) .catch(() => {}); - }); - test("A logged user wants to see the about screen of the webpage", ({given,when,and,then}) => { + // Registering the user before the tests + let credentials = registerUserFromRootDirectory(username, page); + email = credentials[0]; + username = credentials[1]; - let username; - let password; - - given("A logged user in the main menu", async () => { - username = "test@email.com" - password = "password" - - await expect(page).toClick("button[data-testid='Login'"); - await expect(page).toFill("#user", username); - await expect(page).toFill("#password", password); - await expect(page).toClick("button[data-testid='Login'"); + // Logging it out + logOutUser(page); + + }, 120000); + + test("A logged user wants to see the about screen of the webpage", ({given,when,and,then}) => { + + given("A logged user in the main menu", async () => { + loginUserFromRootDirectory(username, email, password, page); }); when("The user presses the button for deploying the lateral menu", async () => { @@ -47,7 +55,7 @@ defineFeature(feature, test => { }); then("The user is presented to the about screen", async () => { - await new Promise(resolve => setTimeout(resolve, 6000)); // Waiting for page to fully load + waitForPageToLoad(); let header = await page.$eval("h2", (element) => { return element.innerHTML }) diff --git a/webapp/e2e/steps/about_positive_non_logged_user_seeing_about_screen.steps.js b/webapp/e2e/steps/about_positive_non_logged_user_seeing_about_screen.steps.js index c2d02436..9d6ff6a6 100644 --- a/webapp/e2e/steps/about_positive_non_logged_user_seeing_about_screen.steps.js +++ b/webapp/e2e/steps/about_positive_non_logged_user_seeing_about_screen.steps.js @@ -1,3 +1,5 @@ +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; @@ -7,6 +9,9 @@ let browser; defineFeature(feature, test => { + let username = "t.about.pos" + let user; + let password; beforeAll(async () => { browser = process.env.GITHUB_ACTIONS @@ -21,7 +26,15 @@ defineFeature(feature, test => { waitUntil: "networkidle0", }) .catch(() => {}); - }); + + // Registering the user before the tests + let credentials = registerUserFromRootDirectory(username, page); + email = credentials[0]; + username = credentials[1]; + + // Logging it out + logOutUser(page); + }, 120000); test("A non-logged user wants to see the about screen of the webpage", ({given,when,and,then}) => { @@ -38,7 +51,7 @@ defineFeature(feature, test => { }); then("The user is presented to the about screen", async () => { - await new Promise(resolve => setTimeout(resolve, 6000)); // Waiting for page to fully load + waitForPageToLoad(); let header = await page.$eval("h2", (element) => { return element.innerHTML }) 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 e8a99808..c17f35a0 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,3 +1,5 @@ +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; @@ -7,6 +9,10 @@ let browser; defineFeature(feature, test => { + let username = "t.login.neg.bad_em" + let user; + let password; + beforeAll(async () => { browser = process.env.GITHUB_ACTIONS @@ -21,15 +27,13 @@ defineFeature(feature, test => { waitUntil: "networkidle0", }) .catch(() => {}); - }); + + }, 120000); test("A registered user wants to log in using his credentials but with an invalid email", ({given,when,and,then}) => { - let username = "pepe" - let user = username + "email.com" // Bad formatted email - let password = "Password" given('A registered user in the root screen', async () => { - await new Promise(resolve => setTimeout(resolve, 6000)); // Waiting for page to fully load + waitForPageToLoad(); let header = await page.$eval("button[data-testid='Login']", (element) => { return element.innerHTML }) @@ -43,7 +47,7 @@ defineFeature(feature, test => { }); and('User enters in the log in screen', async() => { - await new Promise(resolve => setTimeout(resolve, 6000)); // Waiting for page to fully load + waitForPageToLoad(); let header = await page.$eval("h2", (element) => { return element.innerHTML }) @@ -62,7 +66,7 @@ defineFeature(feature, test => { }); then('Log in screen shows an informative error message and does not allow the user to log in', async() => { - await new Promise(resolve => setTimeout(resolve, 6000)); // Waiting for page to fully load + waitForPageToLoad(); let header = await page.$eval("div[class='chakra-alert__desc css-zzks76'", (element) => { return element.innerHTML }) diff --git a/webapp/e2e/steps/login_register_negative_blank_email_credentials.steps.js b/webapp/e2e/steps/login_register_negative_blank_email_credentials.steps.js index 7b7c94fb..ae2b299b 100644 --- a/webapp/e2e/steps/login_register_negative_blank_email_credentials.steps.js +++ b/webapp/e2e/steps/login_register_negative_blank_email_credentials.steps.js @@ -1,3 +1,5 @@ +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; @@ -21,15 +23,16 @@ defineFeature(feature, test => { waitUntil: "networkidle0", }) .catch(() => {}); - }); + }, 120000); test("A registered user wants to log in using his credentials but leaving the email in blank", ({given,when,and,then}) => { - let username = "pepe" - let user = "" - let password = "Password" + let username = "t.login.neg.blank_em" + let user; + let password; + given('A registered user in the root screen', async () => { - await new Promise(resolve => setTimeout(resolve, 6000)); // Waiting for page to fully load + waitForPageToLoad(); let header = await page.$eval("button[data-testid='Login']", (element) => { return element.innerHTML }) @@ -43,7 +46,7 @@ defineFeature(feature, test => { }); and('User enters in the log in screen', async() => { - await new Promise(resolve => setTimeout(resolve, 6000)); // Waiting for page to fully load + waitForPageToLoad(); let header = await page.$eval("h2", (element) => { return element.innerHTML }) @@ -62,7 +65,7 @@ defineFeature(feature, test => { }); then('Log in screen shows an informative error message and does not allow the user to log in', async() => { - await new Promise(resolve => setTimeout(resolve, 6000)); // Waiting for page to fully load + waitForPageToLoad(); let header = await page.$eval("div[class='chakra-alert__desc css-zzks76'", (element) => { return element.innerHTML }) diff --git a/webapp/e2e/steps/login_register_negative_blank_password_credentials.steps.js b/webapp/e2e/steps/login_register_negative_blank_password_credentials.steps.js index 508ad96c..71babbc8 100644 --- a/webapp/e2e/steps/login_register_negative_blank_password_credentials.steps.js +++ b/webapp/e2e/steps/login_register_negative_blank_password_credentials.steps.js @@ -1,3 +1,5 @@ +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; @@ -7,6 +9,10 @@ let browser; defineFeature(feature, test => { + let username = "t.login.neg.blnk_psw" + let user; + let password; + beforeAll(async () => { browser = process.env.GITHUB_ACTIONS @@ -21,15 +27,13 @@ defineFeature(feature, test => { waitUntil: "networkidle0", }) .catch(() => {}); - }); + }, 120000); test("A registered user wants to log in using his credentials but leaving the password in blank", ({given,when,and,then}) => { - let username = "pepe" - let user = username + "@email.com" - let password = "" // Blank password + given('A registered user in the root screen', async () => { - await new Promise(resolve => setTimeout(resolve, 6000)); // Waiting for page to fully load + waitForPageToLoad(); let header = await page.$eval("button[data-testid='Login']", (element) => { return element.innerHTML }) @@ -43,7 +47,7 @@ defineFeature(feature, test => { }); and('User enters in the log in screen', async() => { - await new Promise(resolve => setTimeout(resolve, 6000)); // Waiting for page to fully load + waitForPageToLoad(); let header = await page.$eval("h2", (element) => { return element.innerHTML }) @@ -62,7 +66,7 @@ defineFeature(feature, test => { }); then('Log in screen shows an informative error message and does not allow the user to log in', async() => { - await new Promise(resolve => setTimeout(resolve, 6000)); // Waiting for page to fully load + waitForPageToLoad(); let header = await page.$eval("div[class='chakra-alert__desc css-zzks76'", (element) => { return element.innerHTML }) diff --git a/webapp/e2e/steps/login_register_negative_incorrect_credentials.steps.js b/webapp/e2e/steps/login_register_negative_incorrect_credentials.steps.js index d0d12347..45d6beae 100644 --- a/webapp/e2e/steps/login_register_negative_incorrect_credentials.steps.js +++ b/webapp/e2e/steps/login_register_negative_incorrect_credentials.steps.js @@ -1,3 +1,5 @@ +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; @@ -8,6 +10,10 @@ let browser; defineFeature(feature, test => { + let username = "t.login.neg.bad_crd" + let user; + let password; + beforeAll(async () => { browser = process.env.GITHUB_ACTIONS ? await puppeteer.launch() @@ -21,15 +27,12 @@ defineFeature(feature, test => { waitUntil: "networkidle0", }) .catch(() => {}); - }); + }, 120000); test("A registered user wants to log in using his credentials but they do not match any registered user", ({given,when,and,then}) => { - let username = "pepe" - let user = username + "@pepe.com" - let password = "notPepesPassword" given('A registered user in the root screen', async () => { - await new Promise(resolve => setTimeout(resolve, 6000)); // Waiting for page to fully load + waitForPageToLoad(); let header = await page.$eval("button[data-testid='Login']", (element) => { return element.innerHTML }) @@ -43,7 +46,7 @@ defineFeature(feature, test => { }); and('User enters in the log in screen', async() => { - await new Promise(resolve => setTimeout(resolve, 6000)); // Waiting for page to fully load + waitForPageToLoad(); let header = await page.$eval("h2", (element) => { return element.innerHTML }) @@ -62,7 +65,7 @@ defineFeature(feature, test => { }); then('Log in screen shows an informative error message and does not allow the user to log in', async() => { - await new Promise(resolve => setTimeout(resolve, 6000)); // Waiting for page to fully load + waitForPageToLoad(); let header = await page.$eval("div[class='chakra-alert__desc css-zzks76'", (element) => { return element.innerHTML }) diff --git a/webapp/e2e/steps/logout_positive_logged_user.steps.js b/webapp/e2e/steps/logout_positive_logged_user.steps.js index 1bd5c71b..d9540895 100644 --- a/webapp/e2e/steps/logout_positive_logged_user.steps.js +++ b/webapp/e2e/steps/logout_positive_logged_user.steps.js @@ -7,6 +7,9 @@ let browser; defineFeature(feature, test => { + let username = "t.logOu.pos.logged" + let userEmail; + let password; beforeAll(async () => { browser = process.env.GITHUB_ACTIONS @@ -21,13 +24,14 @@ defineFeature(feature, test => { waitUntil: "networkidle0", }) .catch(() => {}); - }); - test("A logged user wants to log out the webpage", ({given,when,and,then}) => { - let username = "pepe" - let user = username + "@pepe.com" - let password = "pepe" + // Registering the user before the tests + let credentials = registerUserFromRootDirectory(username, page); + userEmail = credentials[0]; + username = credentials[1]; + }, 120000); + test("A logged user wants to log out the webpage", ({given,when,and,then}) => { let gameURL = "http://localhost:3000/dashboard/game"; given('A logged user in main menu', async () => { @@ -38,12 +42,8 @@ defineFeature(feature, test => { expect(value).toBeTruthy(); - await expect(page).toClick("button[data-testid='Login'"); - await expect(page).toFill("#user", user); - await expect(page).toFill("#password", password); - await expect(page).toClick("button[data-testid='Login'"); - - await new Promise(resolve => setTimeout(resolve, 6000)); // Waiting for page to fully load + + waitForPageToLoad(); let newHeader = await page.$eval("h2", (element) => { return element.innerHTML }) @@ -52,7 +52,7 @@ defineFeature(feature, test => { }); when('User presses the button for deploying the lateral menu', async() => { - await new Promise(resolve => setTimeout(resolve, 6000)); + waitForPageToLoad(); await expect(page).toClick("#lateralMenuButton"); }); @@ -63,7 +63,7 @@ defineFeature(feature, test => { }); then('The login screen shows on the user device and the user is no longer logged in', async() => { - await new Promise(resolve => setTimeout(resolve, 6000)); // Waiting for page to fully load + waitForPageToLoad(); let header = await page.$eval("button[data-testid='Login']", (element) => { return element.innerHTML }) @@ -77,4 +77,8 @@ defineFeature(feature, test => { done(); browser.close(); }); -}); \ No newline at end of file +}); + +async function waitForPageToLoad (timeout_ms = 6000) { + await new Promise(resolve => setTimeout(resolve, timeout_ms)); +} \ No newline at end of file diff --git a/webapp/e2e/steps/logout_positive_non_logged_user.steps.js b/webapp/e2e/steps/logout_positive_non_logged_user.steps.js index ff54eb98..41fad64d 100644 --- a/webapp/e2e/steps/logout_positive_non_logged_user.steps.js +++ b/webapp/e2e/steps/logout_positive_non_logged_user.steps.js @@ -1,3 +1,8 @@ +import { registerUserFromRootDirectory}from '../e2e_utils/e2e_utils_register.js'; +import { waitForPageToLoad } from '../e2e_utils/e2e_utils_timeout.js'; +import { logOutUser } from '../e2e_utils/e2e_utils_logout.js'; +import { loginUserFromRootDirectory } from '../e2e_utils/e2e_utils_login.js' + const { defineFeature, loadFeature }=require('jest-cucumber'); const puppeteer = require('puppeteer'); const setDefaultOptions = require("expect-puppeteer").setDefaultOptions; @@ -7,6 +12,9 @@ let browser; defineFeature(feature, test => { + let username = "t.logoU.neg.n_log" + let user; + let password; beforeAll(async () => { browser = process.env.GITHUB_ACTIONS @@ -21,7 +29,7 @@ defineFeature(feature, test => { waitUntil: "networkidle0", }) .catch(() => {}); - }); + }, 120000); test("A non-logged user wants to log out the webpage", ({given,when,then}) => { let username = "pepe" @@ -31,7 +39,7 @@ defineFeature(feature, test => { let gameURL = "http://localhost:3000/dashboard/game"; given('A non-logged user in main menu', async () => { - await new Promise(resolve => setTimeout(resolve, 6000)); // Waiting for page to fully load + waitForPageToLoad(); let header = await page.$eval("button[data-testid='Login']", (element) => { return element.innerHTML }) @@ -49,7 +57,7 @@ defineFeature(feature, test => { }); then('The login screen shows on the user device', async() => { - await new Promise(resolve => setTimeout(resolve, 6000)); + waitForPageToLoad(); let header = await page.$eval("button[data-testid='Login']", (element) => { return element.innerHTML }) diff --git a/webapp/e2e/steps/playing_full_game_positive.steps.js b/webapp/e2e/steps/playing_full_game_positive.steps.js index b1d8be40..35501225 100644 --- a/webapp/e2e/steps/playing_full_game_positive.steps.js +++ b/webapp/e2e/steps/playing_full_game_positive.steps.js @@ -2,6 +2,7 @@ const { defineFeature, loadFeature }=require('jest-cucumber'); const puppeteer = require('puppeteer'); const setDefaultOptions = require("expect-puppeteer").setDefaultOptions; const feature = loadFeature('./features/playing_game_features/positive_playing_full_game.feature'); + let page; let browser; let NUMBER_OF_ANSWERS = 4; @@ -51,7 +52,6 @@ defineFeature(feature, test => { return element.innerHTML }) let value = header === "Bienvenid@ " + username || header === "Welcome " + username; - console.log(header) expect(value).toBeTruthy(); }); diff --git a/webapp/e2e/steps/playing_game_negative_non_logged_user.steps.js b/webapp/e2e/steps/playing_game_negative_non_logged_user.steps.js index 4a361c24..38cfcdcb 100644 --- a/webapp/e2e/steps/playing_game_negative_non_logged_user.steps.js +++ b/webapp/e2e/steps/playing_game_negative_non_logged_user.steps.js @@ -1,3 +1,8 @@ +import { registerUserFromRootDirectory}from '../e2e_utils/e2e_utils_register.js'; +import { waitForPageToLoad } from '../e2e_utils/e2e_utils_timeout.js'; +import { logOutUser } from '../e2e_utils/e2e_utils_logout.js'; +import { loginUserFromRootDirectory } from '../e2e_utils/e2e_utils_login.js' + const { defineFeature, loadFeature }=require('jest-cucumber'); const puppeteer = require('puppeteer'); const setDefaultOptions = require("expect-puppeteer").setDefaultOptions; @@ -7,6 +12,10 @@ let browser; defineFeature(feature, test => { + let username = "t.play.neg" + let user; + let password; + beforeAll(async () => { browser = process.env.GITHUB_ACTIONS @@ -21,7 +30,7 @@ defineFeature(feature, test => { waitUntil: "networkidle0", }) .catch(() => {}); - }); + }, 120000); test("A non-logged user wants to play a new game", ({given,when,then}) => { let username = "pepe" @@ -35,7 +44,7 @@ defineFeature(feature, test => { }); when('Entering the endpoint via URL', async() => { - await new Promise(resolve => setTimeout(resolve, 6000)); + waitForPageToLoad(); await page .goto(gameURL, { waitUntil: "networkidle0", @@ -46,7 +55,7 @@ defineFeature(feature, test => { then('No new game is created and the user is redirected to the log in screen', async() => { - await new Promise(resolve => setTimeout(resolve, 6000)); // Waiting for page to fully load + waitForPageToLoad(); let header = await page.$eval("button[data-testid='Login']", (element) => { return element.innerHTML }) diff --git a/webapp/e2e/steps/register_negative_blank_password.steps.js b/webapp/e2e/steps/register_negative_blank_password.steps.js index f77905d3..07b5434b 100644 --- a/webapp/e2e/steps/register_negative_blank_password.steps.js +++ b/webapp/e2e/steps/register_negative_blank_password.steps.js @@ -1,3 +1,8 @@ +import { registerUserFromRootDirectory}from '../e2e_utils/e2e_utils_register.js'; +import { waitForPageToLoad } from '../e2e_utils/e2e_utils_timeout.js'; +import { logOutUser } from '../e2e_utils/e2e_utils_logout.js'; +import { loginUserFromRootDirectory } from '../e2e_utils/e2e_utils_login.js' + const { defineFeature, loadFeature }=require('jest-cucumber'); const puppeteer = require('puppeteer'); const setDefaultOptions = require("expect-puppeteer").setDefaultOptions; @@ -8,6 +13,9 @@ let browser; defineFeature(feature, test => { + let username = "t.reg.neg.blk_ps" + let user; + let password; beforeAll(async () => { browser = process.env.GITHUB_ACTIONS @@ -22,23 +30,9 @@ defineFeature(feature, test => { waitUntil: "networkidle0", }) .catch(() => {}); - }); + }, 120000); test("The user is not registered in the root directory of the website and tries to create an account", ({given,when,and,then}) => { - // Trying to avoid repeated users: - // Generate random bytes - let randomBytes = crypto.randomBytes(8); // 8 bytes = 64 bits - // Convert bytes to hex - let hexString = randomBytes.toString('hex'); - // Take the first 16 characters - let randomHash = hexString.substring(0, 20); - - - - let username = "test" + randomHash - let user = username + "@email.com" - let password = "password" - given("An unregistered user", async () => { }); @@ -58,7 +52,7 @@ defineFeature(feature, test => { }); then("Log in screen shows an informative error message and does not allow the user to log in", async () => { - await new Promise(resolve => setTimeout(resolve, 6000)); // Waiting for page to fully load + waitForPageToLoad(); let header = await page.$eval("div[class='chakra-alert__desc css-zzks76'", (element) => { return element.innerHTML }) diff --git a/webapp/e2e/steps/register_negative_blank_repeated_password.steps.js b/webapp/e2e/steps/register_negative_blank_repeated_password.steps.js index db009b5d..cb26bddf 100644 --- a/webapp/e2e/steps/register_negative_blank_repeated_password.steps.js +++ b/webapp/e2e/steps/register_negative_blank_repeated_password.steps.js @@ -1,3 +1,8 @@ +import { registerUserFromRootDirectory}from '../e2e_utils/e2e_utils_register.js'; +import { waitForPageToLoad } from '../e2e_utils/e2e_utils_timeout.js'; +import { logOutUser } from '../e2e_utils/e2e_utils_logout.js'; +import { loginUserFromRootDirectory } from '../e2e_utils/e2e_utils_login.js' + const { defineFeature, loadFeature }=require('jest-cucumber'); const puppeteer = require('puppeteer'); const setDefaultOptions = require("expect-puppeteer").setDefaultOptions; @@ -8,6 +13,9 @@ let browser; defineFeature(feature, test => { + let username = "t.reg.neg.bl_r_ps" + let user; + let password; beforeAll(async () => { browser = process.env.GITHUB_ACTIONS @@ -22,23 +30,9 @@ defineFeature(feature, test => { waitUntil: "networkidle0", }) .catch(() => {}); - }); - - test("The user is not registered in the root directory of the website and tries to create an account", ({given,when,and,then}) => { - // Trying to avoid repeated users: - // Generate random bytes - let randomBytes = crypto.randomBytes(8); // 8 bytes = 64 bits - // Convert bytes to hex - let hexString = randomBytes.toString('hex'); - // Take the first 16 characters - let randomHash = hexString.substring(0, 20); - + }, 120000); - - let username = "test" + randomHash - let user = username + "@email.com" - let password = "password" - + test("The user is not registered in the root directory of the website and tries to create an account", ({given,when,and,then}) => { given("An unregistered user", async () => { }); @@ -58,7 +52,7 @@ defineFeature(feature, test => { }); then("Log in screen shows an informative error message and does not allow the user to log in", async () => { - await new Promise(resolve => setTimeout(resolve, 6000)); // Waiting for page to fully load + waitForPageToLoad(); let header = await page.$eval("div[class='chakra-alert__desc css-zzks76'", (element) => { return element.innerHTML }) diff --git a/webapp/e2e/steps/register_negative_blank_username.steps.js b/webapp/e2e/steps/register_negative_blank_username.steps.js index e744973a..c371e015 100644 --- a/webapp/e2e/steps/register_negative_blank_username.steps.js +++ b/webapp/e2e/steps/register_negative_blank_username.steps.js @@ -1,3 +1,8 @@ +import { registerUserFromRootDirectory}from '../e2e_utils/e2e_utils_register.js'; +import { waitForPageToLoad } from '../e2e_utils/e2e_utils_timeout.js'; +import { logOutUser } from '../e2e_utils/e2e_utils_logout.js'; +import { loginUserFromRootDirectory } from '../e2e_utils/e2e_utils_login.js' + const { defineFeature, loadFeature }=require('jest-cucumber'); const puppeteer = require('puppeteer'); const setDefaultOptions = require("expect-puppeteer").setDefaultOptions; @@ -8,6 +13,10 @@ let browser; defineFeature(feature, test => { + let username = "t.reg.blk_un" + let user; + let password; + beforeAll(async () => { browser = process.env.GITHUB_ACTIONS @@ -22,13 +31,10 @@ defineFeature(feature, test => { waitUntil: "networkidle0", }) .catch(() => {}); - }); + }, 120000); test("The user is not registered in the root directory of the website and tries to create an account", ({given,when,and,then}) => { - let username = "" // Blank username - let user = "test@email.com" - let password = "password" - + given("An unregistered user", async () => { }); @@ -48,7 +54,7 @@ defineFeature(feature, test => { }); then("Log in screen shows an informative error message and does not allow the user to log in", async () => { - await new Promise(resolve => setTimeout(resolve, 6000)); // Waiting for page to fully load + waitForPageToLoad(); let header = await page.$eval("div[class='chakra-alert__desc css-zzks76'", (element) => { return element.innerHTML }) diff --git a/webapp/e2e/steps/register_negative_email_already_in_use_form.steps.js b/webapp/e2e/steps/register_negative_email_already_in_use_form.steps.js index afdb36ad..2ce41d06 100644 --- a/webapp/e2e/steps/register_negative_email_already_in_use_form.steps.js +++ b/webapp/e2e/steps/register_negative_email_already_in_use_form.steps.js @@ -1,3 +1,8 @@ +import { registerUserFromRootDirectory}from '../e2e_utils/e2e_utils_register.js'; +import { waitForPageToLoad } from '../e2e_utils/e2e_utils_timeout.js'; +import { logOutUser } from '../e2e_utils/e2e_utils_logout.js'; +import { loginUserFromRootDirectory } from '../e2e_utils/e2e_utils_login.js' + const { defineFeature, loadFeature }=require('jest-cucumber'); const puppeteer = require('puppeteer'); const setDefaultOptions = require("expect-puppeteer").setDefaultOptions; @@ -8,6 +13,10 @@ let browser; defineFeature(feature, test => { + let username = "t.reg.neg.em_aiu" + let user; + let password; + beforeAll(async () => { browser = process.env.GITHUB_ACTIONS @@ -22,20 +31,9 @@ defineFeature(feature, test => { waitUntil: "networkidle0", }) .catch(() => {}); - }); + }, 120000); test("The user is not registered in the root directory of the website", ({given,when,and,then}) => { - // Trying to avoid repeated users: - // Generate random bytes - let randomBytes = crypto.randomBytes(8); // 8 bytes = 64 bits - // Convert bytes to hex - let hexString = randomBytes.toString('hex'); - // Take the first 16 characters - let randomHash = hexString.substring(0, 20); - let username = "test" - let user = "test" + "@email.com" - let password = "password" - given("An unregistered user", async () => { }); @@ -55,7 +53,7 @@ defineFeature(feature, test => { }); then("Log in screen shows an informative error message and does not allow the user to log in", async () => { - await new Promise(resolve => setTimeout(resolve, 6000)); // Waiting for page to fully load + waitForPageToLoad(); let header = await page.$eval("div[class='chakra-alert__desc css-zzks76'", (element) => { return element.innerHTML }) diff --git a/webapp/e2e/steps/register_negative_username_already_in_use_form.steps.js b/webapp/e2e/steps/register_negative_username_already_in_use_form.steps.js index 0f183d8c..ffff4418 100644 --- a/webapp/e2e/steps/register_negative_username_already_in_use_form.steps.js +++ b/webapp/e2e/steps/register_negative_username_already_in_use_form.steps.js @@ -1,3 +1,8 @@ +import { registerUserFromRootDirectory}from '../e2e_utils/e2e_utils_register.js'; +import { waitForPageToLoad } from '../e2e_utils/e2e_utils_timeout.js'; +import { logOutUser } from '../e2e_utils/e2e_utils_logout.js'; +import { loginUserFromRootDirectory } from '../e2e_utils/e2e_utils_login.js' + const { defineFeature, loadFeature }=require('jest-cucumber'); const puppeteer = require('puppeteer'); const setDefaultOptions = require("expect-puppeteer").setDefaultOptions; @@ -8,6 +13,10 @@ let browser; defineFeature(feature, test => { + let username = "t.reg.neg.un_aiu" + let user; + let password; + beforeAll(async () => { browser = process.env.GITHUB_ACTIONS @@ -22,13 +31,9 @@ defineFeature(feature, test => { waitUntil: "networkidle0", }) .catch(() => {}); - }); + }, 120000); test("The user is not registered in the root directory of the website and tries to create an account", ({given,when,and,then}) => { - let username = "test" - let user = username + "@emailNonRepeated.com" - let password = "password" - given("An unregistered user", async () => { }); @@ -48,7 +53,7 @@ defineFeature(feature, test => { }); then("Log in screen shows an informative error message and does not allow the user to log in", async () => { - await new Promise(resolve => setTimeout(resolve, 6000)); // Waiting for page to fully load + waitForPageToLoad(); let header = await page.$eval("div[class='chakra-alert__desc css-zzks76'", (element) => { return element.innerHTML }) diff --git a/webapp/e2e/steps/register_negative_wrong_email_format.steps.js b/webapp/e2e/steps/register_negative_wrong_email_format.steps.js index ad089f77..7698ae2e 100644 --- a/webapp/e2e/steps/register_negative_wrong_email_format.steps.js +++ b/webapp/e2e/steps/register_negative_wrong_email_format.steps.js @@ -1,3 +1,8 @@ +import { registerUserFromRootDirectory}from '../e2e_utils/e2e_utils_register.js'; +import { waitForPageToLoad } from '../e2e_utils/e2e_utils_timeout.js'; +import { logOutUser } from '../e2e_utils/e2e_utils_logout.js'; +import { loginUserFromRootDirectory } from '../e2e_utils/e2e_utils_login.js' + const { defineFeature, loadFeature }=require('jest-cucumber'); const puppeteer = require('puppeteer'); const setDefaultOptions = require("expect-puppeteer").setDefaultOptions; @@ -8,6 +13,9 @@ let browser; defineFeature(feature, test => { + let username = "t.reg.neg.wr_em" + let user; + let password; beforeAll(async () => { browser = process.env.GITHUB_ACTIONS @@ -22,23 +30,9 @@ defineFeature(feature, test => { waitUntil: "networkidle0", }) .catch(() => {}); - }); + }, 120000); test("The user is not registered in the root directory of the website and tries to create an account", ({given,when,and,then}) => { - // Trying to avoid repeated users: - // Generate random bytes - let randomBytes = crypto.randomBytes(8); // 8 bytes = 64 bits - // Convert bytes to hex - let hexString = randomBytes.toString('hex'); - // Take the first 16 characters - let randomHash = hexString.substring(0, 20); - - - - let username = "test" + randomHash - let user = username + "email.com" // Bad format email - let password = "password" - given("An unregistered user", async () => { }); @@ -58,7 +52,7 @@ defineFeature(feature, test => { }); then("Log in screen shows an informative error message and does not allow the user to log in", async () => { - await new Promise(resolve => setTimeout(resolve, 6000)); // Waiting for page to fully load + waitForPageToLoad(); let header = await page.$eval("div[class='chakra-alert__desc css-zzks76'", (element) => { return element.innerHTML }) @@ -73,4 +67,31 @@ defineFeature(feature, test => { done(); browser.close(); }); -}); \ No newline at end of file +}); + + +async function registerUserFromRootDirectory(username) { + // Credentials for the new user + let email = username + "@email.com" + let password = username + "ps" + + // Registeing 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, 6000)); // 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]; +} + +modules.export ={registerUserFromRootDirectory}; \ No newline at end of file diff --git a/webapp/e2e/steps/register_positive_form.steps.js b/webapp/e2e/steps/register_positive_form.steps.js index 9bac60eb..8b708926 100644 --- a/webapp/e2e/steps/register_positive_form.steps.js +++ b/webapp/e2e/steps/register_positive_form.steps.js @@ -2,7 +2,6 @@ const { defineFeature, loadFeature }=require('jest-cucumber'); const puppeteer = require('puppeteer'); const setDefaultOptions = require("expect-puppeteer").setDefaultOptions; const feature = loadFeature('./features/register_form_features/positive_register_form.feature'); -const crypto = require('crypto'); let page; let browser; @@ -25,7 +24,7 @@ defineFeature(feature, test => { waitUntil: "networkidle0", }) .catch(() => {}); - }); + }, 120000); test("The user is not registered in the root directory of the website", ({given,when,and,then}) => { given("An unregistered user", async () => { diff --git a/webapp/e2e/steps/seeing_rules_negative_non_logged_user.steps.js b/webapp/e2e/steps/seeing_rules_negative_non_logged_user.steps.js index 69a57232..bb568e9a 100644 --- a/webapp/e2e/steps/seeing_rules_negative_non_logged_user.steps.js +++ b/webapp/e2e/steps/seeing_rules_negative_non_logged_user.steps.js @@ -1,3 +1,8 @@ +import { registerUserFromRootDirectory}from '../e2e_utils/e2e_utils_register.js'; +import { waitForPageToLoad } from '../e2e_utils/e2e_utils_timeout.js'; +import { logOutUser } from '../e2e_utils/e2e_utils_logout.js'; +import { loginUserFromRootDirectory } from '../e2e_utils/e2e_utils_login.js' + const { defineFeature, loadFeature }=require('jest-cucumber'); const puppeteer = require('puppeteer'); const setDefaultOptions = require("expect-puppeteer").setDefaultOptions; @@ -7,6 +12,10 @@ let browser; defineFeature(feature, test => { + let username = "t.rules.neg" + let user; + let password; + beforeAll(async () => { browser = process.env.GITHUB_ACTIONS @@ -21,17 +30,13 @@ defineFeature(feature, test => { waitUntil: "networkidle0", }) .catch(() => {}); - }); + }, 120000); test("A non-logged user wants to see the rules for the game", ({given,when,then}) => { - let username = "pepe" - let user = username + "@pepe.com" - let password = "pepe" - let gameURL = "http://localhost:3000/dashboard/game"; given('A non-logged user in main menu', async () => { - await new Promise(resolve => setTimeout(resolve, 6000)); + waitForPageToLoad(); let header = await page.$eval("button[data-testid='Login']", (element) => { return element.innerHTML }) @@ -49,7 +54,7 @@ defineFeature(feature, test => { }); then('The user is redirected to the log in screen', async() => { - await new Promise(resolve => setTimeout(resolve, 6000)); + waitForPageToLoad(); let header = await page.$eval("h2[class='chakra-heading css-79qjat']", (element) => { return element.innerHTML }) diff --git a/webapp/e2e/steps/seeing_rules_positive.steps.js b/webapp/e2e/steps/seeing_rules_positive.steps.js index 980a9e67..9a74dacd 100644 --- a/webapp/e2e/steps/seeing_rules_positive.steps.js +++ b/webapp/e2e/steps/seeing_rules_positive.steps.js @@ -1,3 +1,8 @@ +import { registerUserFromRootDirectory}from '../e2e_utils/e2e_utils_register.js'; +import { waitForPageToLoad } from '../e2e_utils/e2e_utils_timeout.js'; +import { logOutUser } from '../e2e_utils/e2e_utils_logout.js'; +import { loginUserFromRootDirectory } from '../e2e_utils/e2e_utils_login.js' + const { defineFeature, loadFeature }=require('jest-cucumber'); const puppeteer = require('puppeteer'); const setDefaultOptions = require("expect-puppeteer").setDefaultOptions; @@ -7,6 +12,9 @@ let browser; defineFeature(feature, test => { + let username = "t.rules.pos" + let user; + let password; beforeAll(async () => { browser = process.env.GITHUB_ACTIONS @@ -21,13 +29,9 @@ defineFeature(feature, test => { waitUntil: "networkidle0", }) .catch(() => {}); - }); + }, 120000); test("A logged user wants to see the rules for the game", ({given,when,and,then}) => { - let username = "pepe" - let user = username + "@pepe.com" - let password = "pepe" - let gameURL = "http://localhost:3000/dashboard/game"; given('A logged user in the main menu', async () => { @@ -42,7 +46,7 @@ defineFeature(feature, test => { await expect(page).toClick("button[data-testid='Login'"); // Checking user is in main screen - await new Promise(resolve => setTimeout(resolve, 6000)); + waitForPageToLoad(); let header = await page.$eval("h2[class='chakra-heading css-79qjat']", (element) => { return element.innerHTML }) @@ -53,7 +57,7 @@ defineFeature(feature, test => { }); when('The user presses the button for deploying the lateral menu', async() => { - await new Promise(resolve => setTimeout(resolve, 6000)); + waitForPageToLoad(); await expect(page).toClick("#lateralMenuButton"); }); @@ -64,7 +68,7 @@ defineFeature(feature, test => { }); then("The screen shows redirects the user to the rules' screen", async() => { - await new Promise(resolve => setTimeout(resolve, 6000)); + waitForPageToLoad(); let header = await page.$eval("h2[class='chakra-heading css-79qjat']", (element) => { return element.innerHTML }) diff --git a/webapp/e2e/steps/seeing_stats_negative_non_logged_user.steps.js b/webapp/e2e/steps/seeing_stats_negative_non_logged_user.steps.js index 2c5bb0bd..3c486fba 100644 --- a/webapp/e2e/steps/seeing_stats_negative_non_logged_user.steps.js +++ b/webapp/e2e/steps/seeing_stats_negative_non_logged_user.steps.js @@ -1,3 +1,8 @@ +import { registerUserFromRootDirectory}from '../e2e_utils/e2e_utils_register.js'; +import { waitForPageToLoad } from '../e2e_utils/e2e_utils_timeout.js'; +import { logOutUser } from '../e2e_utils/e2e_utils_logout.js'; +import { loginUserFromRootDirectory } from '../e2e_utils/e2e_utils_login.js' + const { defineFeature, loadFeature }=require('jest-cucumber'); const puppeteer = require('puppeteer'); const setDefaultOptions = require("expect-puppeteer").setDefaultOptions; @@ -7,6 +12,10 @@ let browser; defineFeature(feature, test => { + let username = "t.stats.neg" + let user; + let password; + beforeAll(async () => { browser = process.env.GITHUB_ACTIONS @@ -21,17 +30,13 @@ defineFeature(feature, test => { waitUntil: "networkidle0", }) .catch(() => {}); - }); + }, 120000); test("A non-logged user wants to see its stats", ({given,when,then}) => { - let username = "pepe" - let user = username + "@pepe.com" - let password = "pepe" - let gameURL = "http://localhost:3000/dashboard/game"; given('A non-logged user in main menu', async () => { - await new Promise(resolve => setTimeout(resolve, 6000)); // Waiting for page to fully load + waitForPageToLoad(); // Waiting for page to fully load let header = await page.$eval("button[data-testid='Login']", (element) => { return element.innerHTML }) @@ -49,7 +54,7 @@ defineFeature(feature, test => { }); then('The user is redirected to the log in screen', async() => { - await new Promise(resolve => setTimeout(resolve, 6000)); + waitForPageToLoad(); let header = await page.$eval("h2[class='chakra-heading css-79qjat']", (element) => { return element.innerHTML }) diff --git a/webapp/e2e/steps/seeing_stats_positive.steps.js b/webapp/e2e/steps/seeing_stats_positive.steps.js index 9168be4f..bd7acbbd 100644 --- a/webapp/e2e/steps/seeing_stats_positive.steps.js +++ b/webapp/e2e/steps/seeing_stats_positive.steps.js @@ -1,3 +1,8 @@ +import { registerUserFromRootDirectory}from '../e2e_utils/e2e_utils_register.js'; +import { waitForPageToLoad } from '../e2e_utils/e2e_utils_timeout.js'; +import { logOutUser } from '../e2e_utils/e2e_utils_logout.js'; +import { loginUserFromRootDirectory } from '../e2e_utils/e2e_utils_login.js' + const { defineFeature, loadFeature }=require('jest-cucumber'); const puppeteer = require('puppeteer'); const setDefaultOptions = require("expect-puppeteer").setDefaultOptions; @@ -7,6 +12,10 @@ let browser; defineFeature(feature, test => { + let username = "t.stats.pos" + let user; + let password; + beforeAll(async () => { browser = process.env.GITHUB_ACTIONS @@ -21,13 +30,9 @@ defineFeature(feature, test => { waitUntil: "networkidle0", }) .catch(() => {}); - }); + }, 120000); test("A logged user with many games wants to see its stats", ({given,when,and,then}) => { - let username = "pepe" - let user = username + "@pepe.com" - let password = "pepe" - let gameURL = "http://localhost:3000/dashboard/game"; given('A logged user in the main menu with many games', async () => { From 7f4fa18be44df20e2dc119dc38fb2285c1f968d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Su=C3=A1rez=20Losada?= Date: Sun, 5 May 2024 16:56:59 +0200 Subject: [PATCH 02/24] test: added ignore https errors --- .../about_positive_non_logged_user_seeing_about_screen.steps.js | 2 +- .../e2e/steps/login_register_negative_bad_email_format.steps.js | 2 +- .../login_register_negative_blank_email_credentials.steps.js | 2 +- .../login_register_negative_blank_password_credentials.steps.js | 2 +- .../login_register_negative_incorrect_credentials.steps.js | 2 +- webapp/e2e/steps/logout_positive_logged_user.steps.js | 2 +- webapp/e2e/steps/logout_positive_non_logged_user.steps.js | 2 +- webapp/e2e/steps/playing_game_negative_non_logged_user.steps.js | 2 +- webapp/e2e/steps/register_negative_blank_password.steps.js | 2 +- .../steps/register_negative_blank_repeated_password.steps.js | 2 +- webapp/e2e/steps/register_negative_blank_username.steps.js | 2 +- .../steps/register_negative_email_already_in_use_form.steps.js | 2 +- .../register_negative_username_already_in_use_form.steps.js | 2 +- webapp/e2e/steps/register_negative_wrong_email_format.steps.js | 2 +- webapp/e2e/steps/seeing_rules_negative_non_logged_user.steps.js | 2 +- webapp/e2e/steps/seeing_rules_positive.steps.js | 2 +- webapp/e2e/steps/seeing_stats_negative_non_logged_user.steps.js | 2 +- webapp/e2e/steps/seeing_stats_positive.steps.js | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/webapp/e2e/steps/about_positive_non_logged_user_seeing_about_screen.steps.js b/webapp/e2e/steps/about_positive_non_logged_user_seeing_about_screen.steps.js index 9d6ff6a6..5004e42d 100644 --- a/webapp/e2e/steps/about_positive_non_logged_user_seeing_about_screen.steps.js +++ b/webapp/e2e/steps/about_positive_non_logged_user_seeing_about_screen.steps.js @@ -16,7 +16,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = process.env.GITHUB_ACTIONS ? await puppeteer.launch() - : await puppeteer.launch({ headless: false, slowMo: 100 }); + : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout setDefaultOptions({ timeout: 10000 }) 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 c17f35a0..35b2d091 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 @@ -17,7 +17,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = process.env.GITHUB_ACTIONS ? await puppeteer.launch() - : await puppeteer.launch({ headless: false, slowMo: 100 }); + : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout setDefaultOptions({ timeout: 10000 }) diff --git a/webapp/e2e/steps/login_register_negative_blank_email_credentials.steps.js b/webapp/e2e/steps/login_register_negative_blank_email_credentials.steps.js index ae2b299b..dd6cb33c 100644 --- a/webapp/e2e/steps/login_register_negative_blank_email_credentials.steps.js +++ b/webapp/e2e/steps/login_register_negative_blank_email_credentials.steps.js @@ -13,7 +13,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = process.env.GITHUB_ACTIONS ? await puppeteer.launch() - : await puppeteer.launch({ headless: false, slowMo: 100 }); + : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout setDefaultOptions({ timeout: 10000 }) diff --git a/webapp/e2e/steps/login_register_negative_blank_password_credentials.steps.js b/webapp/e2e/steps/login_register_negative_blank_password_credentials.steps.js index 71babbc8..64265b00 100644 --- a/webapp/e2e/steps/login_register_negative_blank_password_credentials.steps.js +++ b/webapp/e2e/steps/login_register_negative_blank_password_credentials.steps.js @@ -17,7 +17,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = process.env.GITHUB_ACTIONS ? await puppeteer.launch() - : await puppeteer.launch({ headless: false, slowMo: 100 }); + : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout setDefaultOptions({ timeout: 10000 }) diff --git a/webapp/e2e/steps/login_register_negative_incorrect_credentials.steps.js b/webapp/e2e/steps/login_register_negative_incorrect_credentials.steps.js index 45d6beae..db6aea08 100644 --- a/webapp/e2e/steps/login_register_negative_incorrect_credentials.steps.js +++ b/webapp/e2e/steps/login_register_negative_incorrect_credentials.steps.js @@ -17,7 +17,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = process.env.GITHUB_ACTIONS ? await puppeteer.launch() - : await puppeteer.launch({ headless: false, slowMo: 100 }); + : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout setDefaultOptions({ timeout: 10000 }) diff --git a/webapp/e2e/steps/logout_positive_logged_user.steps.js b/webapp/e2e/steps/logout_positive_logged_user.steps.js index d9540895..7a5be3d7 100644 --- a/webapp/e2e/steps/logout_positive_logged_user.steps.js +++ b/webapp/e2e/steps/logout_positive_logged_user.steps.js @@ -14,7 +14,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = process.env.GITHUB_ACTIONS ? await puppeteer.launch() - : await puppeteer.launch({ headless: false, slowMo: 100 }); + : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout setDefaultOptions({ timeout: 10000 }) diff --git a/webapp/e2e/steps/logout_positive_non_logged_user.steps.js b/webapp/e2e/steps/logout_positive_non_logged_user.steps.js index 41fad64d..5949c001 100644 --- a/webapp/e2e/steps/logout_positive_non_logged_user.steps.js +++ b/webapp/e2e/steps/logout_positive_non_logged_user.steps.js @@ -19,7 +19,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = process.env.GITHUB_ACTIONS ? await puppeteer.launch() - : await puppeteer.launch({ headless: false, slowMo: 100 }); + : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout setDefaultOptions({ timeout: 10000 }) diff --git a/webapp/e2e/steps/playing_game_negative_non_logged_user.steps.js b/webapp/e2e/steps/playing_game_negative_non_logged_user.steps.js index 38cfcdcb..2310d88c 100644 --- a/webapp/e2e/steps/playing_game_negative_non_logged_user.steps.js +++ b/webapp/e2e/steps/playing_game_negative_non_logged_user.steps.js @@ -20,7 +20,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = process.env.GITHUB_ACTIONS ? await puppeteer.launch() - : await puppeteer.launch({ headless: false, slowMo: 100 }); + : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout setDefaultOptions({ timeout: 10000 }) diff --git a/webapp/e2e/steps/register_negative_blank_password.steps.js b/webapp/e2e/steps/register_negative_blank_password.steps.js index 07b5434b..fe894547 100644 --- a/webapp/e2e/steps/register_negative_blank_password.steps.js +++ b/webapp/e2e/steps/register_negative_blank_password.steps.js @@ -20,7 +20,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = process.env.GITHUB_ACTIONS ? await puppeteer.launch() - : await puppeteer.launch({ headless: false, slowMo: 100 }); + : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout setDefaultOptions({ timeout: 10000 }) diff --git a/webapp/e2e/steps/register_negative_blank_repeated_password.steps.js b/webapp/e2e/steps/register_negative_blank_repeated_password.steps.js index cb26bddf..460dd138 100644 --- a/webapp/e2e/steps/register_negative_blank_repeated_password.steps.js +++ b/webapp/e2e/steps/register_negative_blank_repeated_password.steps.js @@ -20,7 +20,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = process.env.GITHUB_ACTIONS ? await puppeteer.launch() - : await puppeteer.launch({ headless: false, slowMo: 100 }); + : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout setDefaultOptions({ timeout: 10000 }) diff --git a/webapp/e2e/steps/register_negative_blank_username.steps.js b/webapp/e2e/steps/register_negative_blank_username.steps.js index c371e015..2ae7fc69 100644 --- a/webapp/e2e/steps/register_negative_blank_username.steps.js +++ b/webapp/e2e/steps/register_negative_blank_username.steps.js @@ -21,7 +21,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = process.env.GITHUB_ACTIONS ? await puppeteer.launch() - : await puppeteer.launch({ headless: false, slowMo: 100 }); + : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout setDefaultOptions({ timeout: 10000 }) diff --git a/webapp/e2e/steps/register_negative_email_already_in_use_form.steps.js b/webapp/e2e/steps/register_negative_email_already_in_use_form.steps.js index 2ce41d06..4b2d2f5f 100644 --- a/webapp/e2e/steps/register_negative_email_already_in_use_form.steps.js +++ b/webapp/e2e/steps/register_negative_email_already_in_use_form.steps.js @@ -21,7 +21,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = process.env.GITHUB_ACTIONS ? await puppeteer.launch() - : await puppeteer.launch({ headless: false, slowMo: 100 }); + : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout setDefaultOptions({ timeout: 10000 }) diff --git a/webapp/e2e/steps/register_negative_username_already_in_use_form.steps.js b/webapp/e2e/steps/register_negative_username_already_in_use_form.steps.js index ffff4418..cda4f9d6 100644 --- a/webapp/e2e/steps/register_negative_username_already_in_use_form.steps.js +++ b/webapp/e2e/steps/register_negative_username_already_in_use_form.steps.js @@ -21,7 +21,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = process.env.GITHUB_ACTIONS ? await puppeteer.launch() - : await puppeteer.launch({ headless: false, slowMo: 100 }); + : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout setDefaultOptions({ timeout: 10000 }) diff --git a/webapp/e2e/steps/register_negative_wrong_email_format.steps.js b/webapp/e2e/steps/register_negative_wrong_email_format.steps.js index 7698ae2e..ee10f30b 100644 --- a/webapp/e2e/steps/register_negative_wrong_email_format.steps.js +++ b/webapp/e2e/steps/register_negative_wrong_email_format.steps.js @@ -20,7 +20,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = process.env.GITHUB_ACTIONS ? await puppeteer.launch() - : await puppeteer.launch({ headless: false, slowMo: 100 }); + : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout setDefaultOptions({ timeout: 10000 }) diff --git a/webapp/e2e/steps/seeing_rules_negative_non_logged_user.steps.js b/webapp/e2e/steps/seeing_rules_negative_non_logged_user.steps.js index bb568e9a..39d2d324 100644 --- a/webapp/e2e/steps/seeing_rules_negative_non_logged_user.steps.js +++ b/webapp/e2e/steps/seeing_rules_negative_non_logged_user.steps.js @@ -20,7 +20,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = process.env.GITHUB_ACTIONS ? await puppeteer.launch() - : await puppeteer.launch({ headless: false, slowMo: 100 }); + : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout setDefaultOptions({ timeout: 10000 }) diff --git a/webapp/e2e/steps/seeing_rules_positive.steps.js b/webapp/e2e/steps/seeing_rules_positive.steps.js index 9a74dacd..96c501e0 100644 --- a/webapp/e2e/steps/seeing_rules_positive.steps.js +++ b/webapp/e2e/steps/seeing_rules_positive.steps.js @@ -19,7 +19,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = process.env.GITHUB_ACTIONS ? await puppeteer.launch() - : await puppeteer.launch({ headless: false, slowMo: 100 }); + : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout setDefaultOptions({ timeout: 10000 }) diff --git a/webapp/e2e/steps/seeing_stats_negative_non_logged_user.steps.js b/webapp/e2e/steps/seeing_stats_negative_non_logged_user.steps.js index 3c486fba..1f0813a6 100644 --- a/webapp/e2e/steps/seeing_stats_negative_non_logged_user.steps.js +++ b/webapp/e2e/steps/seeing_stats_negative_non_logged_user.steps.js @@ -20,7 +20,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = process.env.GITHUB_ACTIONS ? await puppeteer.launch() - : await puppeteer.launch({ headless: false, slowMo: 100 }); + : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout setDefaultOptions({ timeout: 10000 }) diff --git a/webapp/e2e/steps/seeing_stats_positive.steps.js b/webapp/e2e/steps/seeing_stats_positive.steps.js index bd7acbbd..d9e6ba0c 100644 --- a/webapp/e2e/steps/seeing_stats_positive.steps.js +++ b/webapp/e2e/steps/seeing_stats_positive.steps.js @@ -20,7 +20,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = process.env.GITHUB_ACTIONS ? await puppeteer.launch() - : await puppeteer.launch({ headless: false, slowMo: 100 }); + : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout setDefaultOptions({ timeout: 10000 }) From 53c1ed33ed8698e41fa84d992625570697d7d23c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Su=C3=A1rez=20Losada?= Date: Sun, 5 May 2024 17:53:02 +0200 Subject: [PATCH 03/24] test: added register test cases --- .../register_negative_blank_password.steps.js | 120 +++++++++++++++-- ..._negative_blank_repeated_password.steps.js | 119 +++++++++++++++-- .../register_negative_blank_username.steps.js | 116 +++++++++++++++-- ...egative_email_already_in_use_form.steps.js | 121 ++++++++++++++++-- ...tive_username_already_in_use_form.steps.js | 115 +++++++++++++++-- ...ister_negative_wrong_email_format.steps.js | 88 +++++++++++-- 6 files changed, 618 insertions(+), 61 deletions(-) diff --git a/webapp/e2e/steps/register_negative_blank_password.steps.js b/webapp/e2e/steps/register_negative_blank_password.steps.js index fe894547..077cbcb0 100644 --- a/webapp/e2e/steps/register_negative_blank_password.steps.js +++ b/webapp/e2e/steps/register_negative_blank_password.steps.js @@ -1,21 +1,15 @@ -import { registerUserFromRootDirectory}from '../e2e_utils/e2e_utils_register.js'; -import { waitForPageToLoad } from '../e2e_utils/e2e_utils_timeout.js'; -import { logOutUser } from '../e2e_utils/e2e_utils_logout.js'; -import { loginUserFromRootDirectory } from '../e2e_utils/e2e_utils_login.js' - const { defineFeature, loadFeature }=require('jest-cucumber'); const puppeteer = require('puppeteer'); const setDefaultOptions = require("expect-puppeteer").setDefaultOptions; const feature = loadFeature('./features/register_form_features/negative_register_blank_password.feature'); -const crypto = require('crypto'); let page; let browser; defineFeature(feature, test => { let username = "t.reg.neg.blk_ps" - let user; - let password; + let user = username + "@gmail.com"; + let password = username + ".psw"; beforeAll(async () => { browser = process.env.GITHUB_ACTIONS @@ -52,7 +46,9 @@ 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, 6000)); + + let header = await page.$eval("div[class='chakra-alert__desc css-zzks76'", (element) => { return element.innerHTML }) @@ -60,6 +56,9 @@ defineFeature(feature, test => { || header === "Invalid email format or credentials (username or email) already in use"; expect(value).toBeTruthy(); + await new Promise(resolve => setTimeout(resolve, 6000)); + + }); }, 600000); @@ -67,4 +66,105 @@ defineFeature(feature, test => { done(); browser.close(); }); -}); \ No newline at end of file +}); + + + + + +/** + * Note: e2e Testing purposes only! + * Auxiliar function for logging out an user from any directory of the user. + * Beware if the user is playing a game when logging out + * It also ensures the task has been performed successfully. + * + * @param {*} page The website + */ +async function logOutUser(page) { + // Logging out + await expect(page).toClick("#lateralMenuButton"); + await expect(page).toClick("button[data-testid='LogOut']"); + + // Checking for the log out to be sucessful + await new Promise(resolve => setTimeout(resolve, 6000)); + + + let header = await page.$eval("button[data-testid='Login']", (element) => { + return element.innerHTML + }) + let value = header === "Login" || "Iniciar sesión"; + + expect(value).toBeTruthy(); +} + +/** +* Note: e2e Testing purposes only! +* Auxiliar function for login an user using its credentials from the root directory of the website. +* It also ensures the task has been performed successfully. +* +* @param username The username for the user. Currently we are using codes for each test case. +* @param email The email for the user. If none is defined, the username (a code) + '@gmail.com' is used +* @param password The password for the user. If none is defined, the username (a code) + '.ps' is used +* Beware of constraits for the user password. +* @param page The website +*/ +async function loginUserFromRootDirectory(username, email = username + "@gmail.com", password = username + ".ps", page) { + + // login process + await expect(page).toClick("button[data-testid='Login'"); + await expect(page).toFill("#user", email); + await expect(page).toFill("#password", password); + await expect(page).toClick("button[data-testid='Login'"); + + // Checking for the process to be correct + await new Promise(resolve => setTimeout(resolve, 6000)); // 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(); + +} + +/** +* Note: e2e Testing purposes only! +* Auxiliar function for registering a new user from the root directory of the website. +* It also ensures the task has been performed successfully. +* +* @param {*} username The username for the new user. Currently we are using codes for each test case. +* @param {*} page The website +* @returns An array with the credentials of the user created [email, username] +*/ +async function registerUserFromRootDirectory(username, page) { + // Credentials for the new user + let email = username + "@email.com" + let password = username + "ps" + + // Registeing 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, 6000)); // 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]; +} + +/** +* Note: e2e Testing purposes only! +* Auxiliar function that times out the tests for some time, so the page can be fully loaded. +* @param {*} timeout_ms Amount of ms to wait. +*/ +async function waitForPageToLoad(timeout_ms = 6000) { + await new Promise(resolve => setTimeout(resolve, timeout_ms)); +} + diff --git a/webapp/e2e/steps/register_negative_blank_repeated_password.steps.js b/webapp/e2e/steps/register_negative_blank_repeated_password.steps.js index 460dd138..b1fa64a1 100644 --- a/webapp/e2e/steps/register_negative_blank_repeated_password.steps.js +++ b/webapp/e2e/steps/register_negative_blank_repeated_password.steps.js @@ -1,21 +1,16 @@ -import { registerUserFromRootDirectory}from '../e2e_utils/e2e_utils_register.js'; -import { waitForPageToLoad } from '../e2e_utils/e2e_utils_timeout.js'; -import { logOutUser } from '../e2e_utils/e2e_utils_logout.js'; -import { loginUserFromRootDirectory } from '../e2e_utils/e2e_utils_login.js' - const { defineFeature, loadFeature }=require('jest-cucumber'); const puppeteer = require('puppeteer'); const setDefaultOptions = require("expect-puppeteer").setDefaultOptions; const feature = loadFeature('./features/register_form_features/negative_register_blank_repeated_password.feature'); -const crypto = require('crypto'); + let page; let browser; defineFeature(feature, test => { let username = "t.reg.neg.bl_r_ps" - let user; - let password; + let user = username + "@gmail.com"; + let password = username + ".psw"; beforeAll(async () => { browser = process.env.GITHUB_ACTIONS @@ -52,7 +47,9 @@ 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, 6000)); + + let header = await page.$eval("div[class='chakra-alert__desc css-zzks76'", (element) => { return element.innerHTML }) @@ -67,4 +64,106 @@ defineFeature(feature, test => { done(); browser.close(); }); -}); \ No newline at end of file +}); + + + + + +/** + * Note: e2e Testing purposes only! + * Auxiliar function for logging out an user from any directory of the user. + * Beware if the user is playing a game when logging out + * It also ensures the task has been performed successfully. + * + * @param {*} page The website + */ +async function logOutUser(page) { + // Logging out + await expect(page).toClick("#lateralMenuButton"); + await expect(page).toClick("button[data-testid='LogOut']"); + + // Checking for the log out to be sucessful + await new Promise(resolve => setTimeout(resolve, 6000)); + + + let header = await page.$eval("button[data-testid='Login']", (element) => { + return element.innerHTML + }) + let value = header === "Login" || "Iniciar sesión"; + + expect(value).toBeTruthy(); +} + +/** +* Note: e2e Testing purposes only! +* Auxiliar function for login an user using its credentials from the root directory of the website. +* It also ensures the task has been performed successfully. +* +* @param username The username for the user. Currently we are using codes for each test case. +* @param email The email for the user. If none is defined, the username (a code) + '@gmail.com' is used +* @param password The password for the user. If none is defined, the username (a code) + '.ps' is used +* Beware of constraits for the user password. +* @param page The website +*/ +async function loginUserFromRootDirectory(username, email = username + "@gmail.com", password = username + ".ps", page) { + + // login process + await expect(page).toClick("button[data-testid='Login'"); + await expect(page).toFill("#user", email); + await expect(page).toFill("#password", password); + await expect(page).toClick("button[data-testid='Login'"); + + // Checking for the process to be correct + await new Promise(resolve => setTimeout(resolve, 6000)); // 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(); + +} + +/** +* Note: e2e Testing purposes only! +* Auxiliar function for registering a new user from the root directory of the website. +* It also ensures the task has been performed successfully. +* +* @param {*} username The username for the new user. Currently we are using codes for each test case. +* @param {*} page The website +* @returns An array with the credentials of the user created [email, username] +*/ +async function registerUserFromRootDirectory(username, page) { + // Credentials for the new user + let email = username + "@email.com" + let password = username + "ps" + + // Registeing 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, 6000)); // 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]; +} + +/** +* Note: e2e Testing purposes only! +* Auxiliar function that times out the tests for some time, so the page can be fully loaded. +* @param {*} timeout_ms Amount of ms to wait. +*/ +async function waitForPageToLoad(timeout_ms = 6000) { + await new Promise(resolve => setTimeout(resolve, timeout_ms)); + +} + diff --git a/webapp/e2e/steps/register_negative_blank_username.steps.js b/webapp/e2e/steps/register_negative_blank_username.steps.js index 2ae7fc69..03a869e1 100644 --- a/webapp/e2e/steps/register_negative_blank_username.steps.js +++ b/webapp/e2e/steps/register_negative_blank_username.steps.js @@ -1,8 +1,3 @@ -import { registerUserFromRootDirectory}from '../e2e_utils/e2e_utils_register.js'; -import { waitForPageToLoad } from '../e2e_utils/e2e_utils_timeout.js'; -import { logOutUser } from '../e2e_utils/e2e_utils_logout.js'; -import { loginUserFromRootDirectory } from '../e2e_utils/e2e_utils_login.js' - const { defineFeature, loadFeature }=require('jest-cucumber'); const puppeteer = require('puppeteer'); const setDefaultOptions = require("expect-puppeteer").setDefaultOptions; @@ -14,9 +9,8 @@ let browser; defineFeature(feature, test => { let username = "t.reg.blk_un" - let user; - let password; - + let user = username + "@gmail.com"; + let password = username + ".psw"; beforeAll(async () => { browser = process.env.GITHUB_ACTIONS @@ -54,7 +48,9 @@ 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, 6000)); + + let header = await page.$eval("div[class='chakra-alert__desc css-zzks76'", (element) => { return element.innerHTML }) @@ -69,4 +65,104 @@ defineFeature(feature, test => { done(); browser.close(); }); -}); \ No newline at end of file +}); + + + +/** + * Note: e2e Testing purposes only! + * Auxiliar function for logging out an user from any directory of the user. + * Beware if the user is playing a game when logging out + * It also ensures the task has been performed successfully. + * + * @param {*} page The website + */ +async function logOutUser(page) { + // Logging out + await expect(page).toClick("#lateralMenuButton"); + await expect(page).toClick("button[data-testid='LogOut']"); + + // Checking for the log out to be sucessful + await new Promise(resolve => setTimeout(resolve, 6000)); + + + let header = await page.$eval("button[data-testid='Login']", (element) => { + return element.innerHTML + }) + let value = header === "Login" || "Iniciar sesión"; + + expect(value).toBeTruthy(); +} + +/** +* Note: e2e Testing purposes only! +* Auxiliar function for login an user using its credentials from the root directory of the website. +* It also ensures the task has been performed successfully. +* +* @param username The username for the user. Currently we are using codes for each test case. +* @param email The email for the user. If none is defined, the username (a code) + '@gmail.com' is used +* @param password The password for the user. If none is defined, the username (a code) + '.ps' is used +* Beware of constraits for the user password. +* @param page The website +*/ +async function loginUserFromRootDirectory(username, email = username + "@gmail.com", password = username + ".ps", page) { + + // login process + await expect(page).toClick("button[data-testid='Login'"); + await expect(page).toFill("#user", email); + await expect(page).toFill("#password", password); + await expect(page).toClick("button[data-testid='Login'"); + + // Checking for the process to be correct + await new Promise(resolve => setTimeout(resolve, 6000)); // 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(); + +} + +/** +* Note: e2e Testing purposes only! +* Auxiliar function for registering a new user from the root directory of the website. +* It also ensures the task has been performed successfully. +* +* @param {*} username The username for the new user. Currently we are using codes for each test case. +* @param {*} page The website +* @returns An array with the credentials of the user created [email, username] +*/ +async function registerUserFromRootDirectory(username, page) { + // Credentials for the new user + let email = username + "@email.com" + let password = username + "ps" + + // Registeing 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, 6000)); // 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]; +} + +/** +* Note: e2e Testing purposes only! +* Auxiliar function that times out the tests for some time, so the page can be fully loaded. +* @param {*} timeout_ms Amount of ms to wait. +*/ +async function waitForPageToLoad(timeout_ms = 6000) { + await new Promise(resolve => setTimeout(resolve, timeout_ms)); + +} + diff --git a/webapp/e2e/steps/register_negative_email_already_in_use_form.steps.js b/webapp/e2e/steps/register_negative_email_already_in_use_form.steps.js index 4b2d2f5f..ec1876f1 100644 --- a/webapp/e2e/steps/register_negative_email_already_in_use_form.steps.js +++ b/webapp/e2e/steps/register_negative_email_already_in_use_form.steps.js @@ -1,8 +1,3 @@ -import { registerUserFromRootDirectory}from '../e2e_utils/e2e_utils_register.js'; -import { waitForPageToLoad } from '../e2e_utils/e2e_utils_timeout.js'; -import { logOutUser } from '../e2e_utils/e2e_utils_logout.js'; -import { loginUserFromRootDirectory } from '../e2e_utils/e2e_utils_login.js' - const { defineFeature, loadFeature }=require('jest-cucumber'); const puppeteer = require('puppeteer'); const setDefaultOptions = require("expect-puppeteer").setDefaultOptions; @@ -14,8 +9,8 @@ let browser; defineFeature(feature, test => { let username = "t.reg.neg.em_aiu" - let user; - let password; + let email = username + "@gmail.com"; + let password = username + ".psw"; beforeAll(async () => { @@ -31,6 +26,13 @@ defineFeature(feature, test => { waitUntil: "networkidle0", }) .catch(() => {}); + + // Registering the user before the tests + await registerUserFromRootDirectory(username, page); + + // Logging it out + await logOutUser(page) + }, 120000); test("The user is not registered in the root directory of the website", ({given,when,and,then}) => { @@ -40,7 +42,7 @@ defineFeature(feature, test => { when("the user fills the data in the form using an already used email", async () => { await expect(page).toClick("span[class='chakra-link css-1bicqx'"); - await expect(page).toFill("input[id='user'", user); + 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); @@ -53,7 +55,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, 6000)); let header = await page.$eval("div[class='chakra-alert__desc css-zzks76'", (element) => { return element.innerHTML }) @@ -68,4 +70,103 @@ defineFeature(feature, test => { done(); browser.close(); }); -}); \ No newline at end of file +}); + + + + +/** + * Note: e2e Testing purposes only! + * Auxiliar function for logging out an user from any directory of the user. + * Beware if the user is playing a game when logging out + * It also ensures the task has been performed successfully. + * + * @param {*} page The website + */ +async function logOutUser(page) { + // Logging out + await expect(page).toClick("#lateralMenuButton"); + await expect(page).toClick("button[data-testid='LogOut']"); + + // Checking for the log out to be sucessful + waitForPageToLoad(); + let header = await page.$eval("button[data-testid='Login']", (element) => { + return element.innerHTML + }) + let value = header === "Login" || "Iniciar sesión"; + + expect(value).toBeTruthy(); +} + +/** +* Note: e2e Testing purposes only! +* Auxiliar function for login an user using its credentials from the root directory of the website. +* It also ensures the task has been performed successfully. +* +* @param username The username for the user. Currently we are using codes for each test case. +* @param email The email for the user. If none is defined, the username (a code) + '@gmail.com' is used +* @param password The password for the user. If none is defined, the username (a code) + '.ps' is used +* Beware of constraits for the user password. +* @param page The website +*/ +async function loginUserFromRootDirectory(username, email = username + "@gmail.com", password = username + ".ps", page) { + + // login process + await expect(page).toClick("button[data-testid='Login'"); + await expect(page).toFill("#user", email); + await expect(page).toFill("#password", password); + await expect(page).toClick("button[data-testid='Login'"); + + // Checking for the process to be correct + await new Promise(resolve => setTimeout(resolve, 6000)); // 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(); + +} + +/** +* Note: e2e Testing purposes only! +* Auxiliar function for registering a new user from the root directory of the website. +* It also ensures the task has been performed successfully. +* +* @param {*} username The username for the new user. Currently we are using codes for each test case. +* @param {*} page The website +* @returns An array with the credentials of the user created [email, username] +*/ +async function registerUserFromRootDirectory(username, page) { + // Credentials for the new user + let email = username + "@email.com" + let password = username + "ps" + + // Registeing 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, 6000)); // 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]; +} + +/** +* Note: e2e Testing purposes only! +* Auxiliar function that times out the tests for some time, so the page can be fully loaded. +* @param {*} timeout_ms Amount of ms to wait. +*/ +async function waitForPageToLoad(timeout_ms = 6000) { + await new Promise(resolve => setTimeout(resolve, timeout_ms)); + +} + diff --git a/webapp/e2e/steps/register_negative_username_already_in_use_form.steps.js b/webapp/e2e/steps/register_negative_username_already_in_use_form.steps.js index cda4f9d6..21b213eb 100644 --- a/webapp/e2e/steps/register_negative_username_already_in_use_form.steps.js +++ b/webapp/e2e/steps/register_negative_username_already_in_use_form.steps.js @@ -1,8 +1,3 @@ -import { registerUserFromRootDirectory}from '../e2e_utils/e2e_utils_register.js'; -import { waitForPageToLoad } from '../e2e_utils/e2e_utils_timeout.js'; -import { logOutUser } from '../e2e_utils/e2e_utils_logout.js'; -import { loginUserFromRootDirectory } from '../e2e_utils/e2e_utils_login.js' - const { defineFeature, loadFeature }=require('jest-cucumber'); const puppeteer = require('puppeteer'); const setDefaultOptions = require("expect-puppeteer").setDefaultOptions; @@ -14,8 +9,8 @@ let browser; defineFeature(feature, test => { let username = "t.reg.neg.un_aiu" - let user; - let password; + let user = username + "@gmail.com"; + let password = username + ".psw"; beforeAll(async () => { @@ -53,7 +48,9 @@ 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, 6000)); + + let header = await page.$eval("div[class='chakra-alert__desc css-zzks76'", (element) => { return element.innerHTML }) @@ -68,4 +65,104 @@ defineFeature(feature, test => { done(); browser.close(); }); -}); \ No newline at end of file +}); + + + +/** + * Note: e2e Testing purposes only! + * Auxiliar function for logging out an user from any directory of the user. + * Beware if the user is playing a game when logging out + * It also ensures the task has been performed successfully. + * + * @param {*} page The website + */ +async function logOutUser(page) { + // Logging out + await expect(page).toClick("#lateralMenuButton"); + await expect(page).toClick("button[data-testid='LogOut']"); + + // Checking for the log out to be sucessful + await new Promise(resolve => setTimeout(resolve, 6000)); + + + let header = await page.$eval("button[data-testid='Login']", (element) => { + return element.innerHTML + }) + let value = header === "Login" || "Iniciar sesión"; + + expect(value).toBeTruthy(); +} + +/** +* Note: e2e Testing purposes only! +* Auxiliar function for login an user using its credentials from the root directory of the website. +* It also ensures the task has been performed successfully. +* +* @param username The username for the user. Currently we are using codes for each test case. +* @param email The email for the user. If none is defined, the username (a code) + '@gmail.com' is used +* @param password The password for the user. If none is defined, the username (a code) + '.ps' is used +* Beware of constraits for the user password. +* @param page The website +*/ +async function loginUserFromRootDirectory(username, email = username + "@gmail.com", password = username + ".ps", page) { + + // login process + await expect(page).toClick("button[data-testid='Login'"); + await expect(page).toFill("#user", email); + await expect(page).toFill("#password", password); + await expect(page).toClick("button[data-testid='Login'"); + + // Checking for the process to be correct + await new Promise(resolve => setTimeout(resolve, 6000)); // 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(); + +} + +/** +* Note: e2e Testing purposes only! +* Auxiliar function for registering a new user from the root directory of the website. +* It also ensures the task has been performed successfully. +* +* @param {*} username The username for the new user. Currently we are using codes for each test case. +* @param {*} page The website +* @returns An array with the credentials of the user created [email, username] +*/ +async function registerUserFromRootDirectory(username, page) { + // Credentials for the new user + let email = username + "@email.com" + let password = username + "ps" + + // Registeing 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, 6000)); // 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]; +} + +/** +* Note: e2e Testing purposes only! +* Auxiliar function that times out the tests for some time, so the page can be fully loaded. +* @param {*} timeout_ms Amount of ms to wait. +*/ +async function waitForPageToLoad(timeout_ms = 6000) { + await new Promise(resolve => setTimeout(resolve, timeout_ms)); + +} + diff --git a/webapp/e2e/steps/register_negative_wrong_email_format.steps.js b/webapp/e2e/steps/register_negative_wrong_email_format.steps.js index ee10f30b..fd799f4e 100644 --- a/webapp/e2e/steps/register_negative_wrong_email_format.steps.js +++ b/webapp/e2e/steps/register_negative_wrong_email_format.steps.js @@ -1,21 +1,15 @@ -import { registerUserFromRootDirectory}from '../e2e_utils/e2e_utils_register.js'; -import { waitForPageToLoad } from '../e2e_utils/e2e_utils_timeout.js'; -import { logOutUser } from '../e2e_utils/e2e_utils_logout.js'; -import { loginUserFromRootDirectory } from '../e2e_utils/e2e_utils_login.js' - const { defineFeature, loadFeature }=require('jest-cucumber'); const puppeteer = require('puppeteer'); const setDefaultOptions = require("expect-puppeteer").setDefaultOptions; const feature = loadFeature('./features/register_form_features/negative_register_wrong_email_format.feature'); -const crypto = require('crypto'); let page; let browser; defineFeature(feature, test => { - let username = "t.reg.neg.wr_em" - let user; - let password; + let username = "t.reg.neg.wr_em"; + let user = username + "@gmail.com"; + let password = username + ".psw"; beforeAll(async () => { browser = process.env.GITHUB_ACTIONS @@ -52,7 +46,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, 6000)); let header = await page.$eval("div[class='chakra-alert__desc css-zzks76'", (element) => { return element.innerHTML }) @@ -68,9 +62,70 @@ defineFeature(feature, test => { browser.close(); }); }); +/** + * Note: e2e Testing purposes only! + * Auxiliar function for logging out an user from any directory of the user. + * Beware if the user is playing a game when logging out + * It also ensures the task has been performed successfully. + * + * @param {*} page The website + */ +async function logOutUser(page) { + // Logging out + await expect(page).toClick("#lateralMenuButton"); + await expect(page).toClick("button[data-testid='LogOut']"); + + // Checking for the log out to be sucessful + await new Promise(resolve => setTimeout(resolve, 6000)); + + + let header = await page.$eval("button[data-testid='Login']", (element) => { + return element.innerHTML + }) + let value = header === "Login" || "Iniciar sesión"; + + expect(value).toBeTruthy(); +} + +/** +* Note: e2e Testing purposes only! +* Auxiliar function for login an user using its credentials from the root directory of the website. +* It also ensures the task has been performed successfully. +* +* @param username The username for the user. Currently we are using codes for each test case. +* @param email The email for the user. If none is defined, the username (a code) + '@gmail.com' is used +* @param password The password for the user. If none is defined, the username (a code) + '.ps' is used +* Beware of constraits for the user password. +* @param page The website +*/ +async function loginUserFromRootDirectory(username, email = username + "@gmail.com", password = username + ".ps", page) { + + // login process + await expect(page).toClick("button[data-testid='Login'"); + await expect(page).toFill("#user", email); + await expect(page).toFill("#password", password); + await expect(page).toClick("button[data-testid='Login'"); + + // Checking for the process to be correct + await new Promise(resolve => setTimeout(resolve, 6000)); // 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(); +} -async function registerUserFromRootDirectory(username) { +/** +* Note: e2e Testing purposes only! +* Auxiliar function for registering a new user from the root directory of the website. +* It also ensures the task has been performed successfully. +* +* @param {*} username The username for the new user. Currently we are using codes for each test case. +* @param {*} page The website +* @returns An array with the credentials of the user created [email, username] +*/ +async function registerUserFromRootDirectory(username, page) { // Credentials for the new user let email = username + "@email.com" let password = username + "ps" @@ -94,4 +149,13 @@ async function registerUserFromRootDirectory(username) { return [email, password]; } -modules.export ={registerUserFromRootDirectory}; \ No newline at end of file +/** +* Note: e2e Testing purposes only! +* Auxiliar function that times out the tests for some time, so the page can be fully loaded. +* @param {*} timeout_ms Amount of ms to wait. +*/ +async function waitForPageToLoad(timeout_ms = 6000) { + await new Promise(resolve => setTimeout(resolve, timeout_ms)); + +} + From e445f414a4c85c294518ed9dd728c39e2b900db0 Mon Sep 17 00:00:00 2001 From: "Dario G. Mori" Date: Sun, 5 May 2024 18:11:48 +0200 Subject: [PATCH 04/24] fix: about_positive_logged_user_seeing_about_screen.steps.js --- webapp/e2e/jest.config.js | 2 +- ...e_logged_user_seeing_about_screen.steps.js | 82 +++++++++++++++---- .../steps/playing_full_game_positive.steps.js | 3 +- 3 files changed, 69 insertions(+), 18 deletions(-) diff --git a/webapp/e2e/jest.config.js b/webapp/e2e/jest.config.js index 1f4b748c..461bc936 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"], + testMatch: ["**/playing_full_game_pos*.steps.js","**/about.steps.js", "**/login_positive.steps.js","**/about_positive_logged_user_seeing_about_screen.steps.js"], moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json", "node"], testTimeout: 30000 } \ No newline at end of file diff --git a/webapp/e2e/steps/about_positive_logged_user_seeing_about_screen.steps.js b/webapp/e2e/steps/about_positive_logged_user_seeing_about_screen.steps.js index 975b6439..848384f9 100644 --- a/webapp/e2e/steps/about_positive_logged_user_seeing_about_screen.steps.js +++ b/webapp/e2e/steps/about_positive_logged_user_seeing_about_screen.steps.js @@ -1,8 +1,3 @@ - -const {registerUserFromRootDirectory} = require('../e2e_utils/e2e_utils_register.js'); -const {waitForPageToLoad} = require('../e2e_utils/e2e_utils_timeout.js'); -const {logOutUser} = require('../e2e_utils/e2e_utils_logout.js'); -const {loginUserFromRootDirectory} = require('../e2e_utils/e2e_utils_login.js'); const { defineFeature, loadFeature }=require('jest-cucumber'); const puppeteer = require('puppeteer'); const setDefaultOptions = require("expect-puppeteer").setDefaultOptions; @@ -13,13 +8,11 @@ let browser; defineFeature(feature, test => { let username = "t.about.pos"; - let email; - let password; beforeAll(async () => { browser = process.env.GITHUB_ACTIONS - ? await puppeteer.launch() - : await puppeteer.launch({ headless: false, slowMo: 100 }); + ? 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 }) @@ -31,19 +24,17 @@ defineFeature(feature, test => { .catch(() => {}); // Registering the user before the tests - let credentials = registerUserFromRootDirectory(username, page); - email = credentials[0]; - username = credentials[1]; + await registerUserFromRootDirectory(username, page); // Logging it out - logOutUser(page); + await logOutUser(page); }, 120000); test("A logged user wants to see the about screen of the webpage", ({given,when,and,then}) => { given("A logged user in the main menu", async () => { - loginUserFromRootDirectory(username, email, password, page); + await loginUserFromRootDirectory(username, page); }); when("The user presses the button for deploying the lateral menu", async () => { @@ -55,7 +46,7 @@ defineFeature(feature, test => { }); then("The user is presented to the about 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 }) @@ -68,4 +59,63 @@ 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(); +} +async function loginUserFromRootDirectory(username, page) { + // Credentials for the new user + let email = username + "@email.com" + let password = username + "psw" + + // login process + await expect(page).toClick("button[data-testid='Login'"); + await expect(page).toFill("#user", email); + await expect(page).toFill("#password", password); + await expect(page).toClick("button[data-testid='Login'"); + + // 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(); + +} \ No newline at end of file diff --git a/webapp/e2e/steps/playing_full_game_positive.steps.js b/webapp/e2e/steps/playing_full_game_positive.steps.js index 0b1dfa57..b0eedbb0 100644 --- a/webapp/e2e/steps/playing_full_game_positive.steps.js +++ b/webapp/e2e/steps/playing_full_game_positive.steps.js @@ -370,7 +370,8 @@ async function loginUserFromRootDirectory(username, page) { } async function logOutUser(page) { // Logging out - await expect(page).toClick("#lateralMenuButton"); + 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 From 9a3254cd53d94d19d0aee3a618fd53be16bc3bac Mon Sep 17 00:00:00 2001 From: "Dario G. Mori" Date: Sun, 5 May 2024 18:15:01 +0200 Subject: [PATCH 05/24] fix: about_positive_non_logged_user_seeing_about_screen.steps.js --- webapp/e2e/jest.config.js | 3 ++- ..._non_logged_user_seeing_about_screen.steps.js | 16 +--------------- 2 files changed, 3 insertions(+), 16 deletions(-) diff --git a/webapp/e2e/jest.config.js b/webapp/e2e/jest.config.js index 461bc936..2112e935 100644 --- a/webapp/e2e/jest.config.js +++ b/webapp/e2e/jest.config.js @@ -1,5 +1,6 @@ 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","**/about.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 } \ No newline at end of file diff --git a/webapp/e2e/steps/about_positive_non_logged_user_seeing_about_screen.steps.js b/webapp/e2e/steps/about_positive_non_logged_user_seeing_about_screen.steps.js index 5004e42d..aed45e63 100644 --- a/webapp/e2e/steps/about_positive_non_logged_user_seeing_about_screen.steps.js +++ b/webapp/e2e/steps/about_positive_non_logged_user_seeing_about_screen.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,10 +7,6 @@ let browser; defineFeature(feature, test => { - let username = "t.about.pos" - let user; - let password; - beforeAll(async () => { browser = process.env.GITHUB_ACTIONS ? await puppeteer.launch() @@ -26,14 +20,6 @@ defineFeature(feature, test => { waitUntil: "networkidle0", }) .catch(() => {}); - - // Registering the user before the tests - let credentials = registerUserFromRootDirectory(username, page); - email = credentials[0]; - username = credentials[1]; - - // Logging it out - logOutUser(page); }, 120000); test("A non-logged user wants to see the about screen of the webpage", ({given,when,and,then}) => { @@ -51,7 +37,7 @@ defineFeature(feature, test => { }); then("The user is presented to the about 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 }) From efaaaefdac11f246f290278faf34d7cb2030d563 Mon Sep 17 00:00:00 2001 From: "Dario G. Mori" Date: Sun, 5 May 2024 18:24:57 +0200 Subject: [PATCH 06/24] fix: added timeout for pressing about button --- .../about_positive_logged_user_seeing_about_screen.steps.js | 1 + 1 file changed, 1 insertion(+) diff --git a/webapp/e2e/steps/about_positive_logged_user_seeing_about_screen.steps.js b/webapp/e2e/steps/about_positive_logged_user_seeing_about_screen.steps.js index 848384f9..520869ed 100644 --- a/webapp/e2e/steps/about_positive_logged_user_seeing_about_screen.steps.js +++ b/webapp/e2e/steps/about_positive_logged_user_seeing_about_screen.steps.js @@ -42,6 +42,7 @@ defineFeature(feature, test => { }); and("the user presses the button for seeing the about section (i)", async () => { + await new Promise(resolve => setTimeout(resolve, 5000)); // Waiting for page to fully load await expect(page).toClick("#aboutButton"); }); From 6e299975888a5fbfd955131b1671f7fb09877642 Mon Sep 17 00:00:00 2001 From: "Dario G. Mori" Date: Sun, 5 May 2024 18:36:29 +0200 Subject: [PATCH 07/24] fix: removed about and changed stuff in login register negative --- webapp/e2e/jest.config.js | 2 +- webapp/e2e/steps/about.steps.js | 77 ------------------- ...egister_negative_bad_email_format.steps.js | 68 ++++++++++++---- 3 files changed, 56 insertions(+), 91 deletions(-) delete mode 100644 webapp/e2e/steps/about.steps.js 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 From 95346c217b84adc246268979549a789a0a67c90e Mon Sep 17 00:00:00 2001 From: "Dario G. Mori" Date: Sun, 5 May 2024 18:42:13 +0200 Subject: [PATCH 08/24] fix: simplified test --- .../login_register_negative_bad_email_format.steps.js | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) 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 aa5665fb..3bf0be40 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 @@ -25,12 +25,6 @@ defineFeature(feature, test => { }) .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}) => { @@ -60,7 +54,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", username + "a"); + await expect(page).toFill("#user", username ); await expect(page).toFill("#password", password); }); From 96aa9b5ecb522ff8f021fc8a199f5b701e358c3d Mon Sep 17 00:00:00 2001 From: "Dario G. Mori" Date: Sun, 5 May 2024 18:45:46 +0200 Subject: [PATCH 09/24] fix: login_register_negative_blank_email_credentials.steps.js --- webapp/e2e/jest.config.js | 2 +- ...ter_negative_blank_email_credentials.steps.js | 16 +++++----------- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/webapp/e2e/jest.config.js b/webapp/e2e/jest.config.js index e2c70824..0586f4a8 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","**/login_register_negative_bad_email_format.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_register_negative_blank_email_credentials.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/login_register_negative_blank_email_credentials.steps.js b/webapp/e2e/steps/login_register_negative_blank_email_credentials.steps.js index dd6cb33c..1470f4b4 100644 --- a/webapp/e2e/steps/login_register_negative_blank_email_credentials.steps.js +++ b/webapp/e2e/steps/login_register_negative_blank_email_credentials.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; @@ -26,13 +24,9 @@ defineFeature(feature, test => { }, 120000); test("A registered user wants to log in using his credentials but leaving the email in blank", ({given,when,and,then}) => { - let username = "t.login.neg.blank_em" - let user; - let password; - 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 }) @@ -46,7 +40,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 }) @@ -56,8 +50,8 @@ defineFeature(feature, test => { }); and('User fills the form with his proper password but leaves the email in blank', async() => { - await expect(page).toFill("#user", user); - await expect(page).toFill("#password", password); + await expect(page).toFill("#user", ""); + await expect(page).toFill("#password", "password"); }); and('User presses the log in button', async() => { @@ -65,7 +59,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 }) From 925c2d630df5b8a58719361b6a9cff356b5f91b4 Mon Sep 17 00:00:00 2001 From: "Dario G. Mori" Date: Sun, 5 May 2024 18:55:55 +0200 Subject: [PATCH 10/24] fix: ignoreHttpsErrors --- api/src/main/resources/application.properties | 10 +++++----- ...r_negative_blank_email_credentials.steps.js | 2 +- ...egative_blank_password_credentials.steps.js | 18 +++++++----------- ...ter_negative_incorrect_credentials.steps.js | 2 +- .../steps/logout_positive_logged_user.steps.js | 2 +- .../logout_positive_non_logged_user.steps.js | 2 +- ...ying_game_negative_non_logged_user.steps.js | 2 +- .../register_negative_blank_password.steps.js | 2 +- ...r_negative_blank_repeated_password.steps.js | 2 +- .../register_negative_blank_username.steps.js | 2 +- ...negative_email_already_in_use_form.steps.js | 2 +- ...ative_username_already_in_use_form.steps.js | 2 +- ...gister_negative_wrong_email_format.steps.js | 2 +- ...ing_rules_negative_non_logged_user.steps.js | 2 +- .../e2e/steps/seeing_rules_positive.steps.js | 2 +- ...ing_stats_negative_non_logged_user.steps.js | 2 +- .../e2e/steps/seeing_stats_positive.steps.js | 2 +- 17 files changed, 27 insertions(+), 31 deletions(-) diff --git a/api/src/main/resources/application.properties b/api/src/main/resources/application.properties index e129b09c..df8fd1c2 100644 --- a/api/src/main/resources/application.properties +++ b/api/src/main/resources/application.properties @@ -11,8 +11,8 @@ springdoc.api-docs.path=/swagger/api-docs management.endpoints.web.exposure.include=prometheus management.endpoint.prometheus.enabled=true -server.port=8443 -server.ssl.key-alias=tomcat -server.ssl.key-store=/etc/letsencrypt/live/kiwiq.run.place/keystore.p12 -server.ssl.key-store-type=PKCS12 -server.ssl.key-store-password=${SSL_PASSWORD} \ No newline at end of file +#server.port=8443 +#server.ssl.key-alias=tomcat +#server.ssl.key-store=/etc/letsencrypt/live/kiwiq.run.place/keystore.p12 +#server.ssl.key-store-type=PKCS12 +#server.ssl.key-store-password=${SSL_PASSWORD} \ No newline at end of file diff --git a/webapp/e2e/steps/login_register_negative_blank_email_credentials.steps.js b/webapp/e2e/steps/login_register_negative_blank_email_credentials.steps.js index 1470f4b4..3814f182 100644 --- a/webapp/e2e/steps/login_register_negative_blank_email_credentials.steps.js +++ b/webapp/e2e/steps/login_register_negative_blank_email_credentials.steps.js @@ -10,7 +10,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = process.env.GITHUB_ACTIONS - ? await puppeteer.launch() + ? await puppeteer.launch({ ignoreHTTPSErrors: true }) : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout diff --git a/webapp/e2e/steps/login_register_negative_blank_password_credentials.steps.js b/webapp/e2e/steps/login_register_negative_blank_password_credentials.steps.js index 64265b00..526c021c 100644 --- a/webapp/e2e/steps/login_register_negative_blank_password_credentials.steps.js +++ b/webapp/e2e/steps/login_register_negative_blank_password_credentials.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,14 +7,12 @@ let browser; defineFeature(feature, test => { - let username = "t.login.neg.blnk_psw" - let user; - let password; + let username = "t.login.neg.blnk_psw"; beforeAll(async () => { browser = process.env.GITHUB_ACTIONS - ? await puppeteer.launch() + ? await puppeteer.launch({ ignoreHTTPSErrors: true }) : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout @@ -33,7 +29,7 @@ defineFeature(feature, test => { 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 +43,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,8 +53,8 @@ defineFeature(feature, test => { }); and('User fills the form with his proper email but leaves the password in blank', async() => { - await expect(page).toFill("#user", user); - await expect(page).toFill("#password", password); + await expect(page).toFill("#user", username+"@test.com"); + await expect(page).toFill("#password", ""); }); and('User presses the log in button', async() => { @@ -66,7 +62,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 }) diff --git a/webapp/e2e/steps/login_register_negative_incorrect_credentials.steps.js b/webapp/e2e/steps/login_register_negative_incorrect_credentials.steps.js index db6aea08..962bad69 100644 --- a/webapp/e2e/steps/login_register_negative_incorrect_credentials.steps.js +++ b/webapp/e2e/steps/login_register_negative_incorrect_credentials.steps.js @@ -16,7 +16,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = process.env.GITHUB_ACTIONS - ? await puppeteer.launch() + ? await puppeteer.launch({ ignoreHTTPSErrors: true }) : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout diff --git a/webapp/e2e/steps/logout_positive_logged_user.steps.js b/webapp/e2e/steps/logout_positive_logged_user.steps.js index 7a5be3d7..fd6cc9db 100644 --- a/webapp/e2e/steps/logout_positive_logged_user.steps.js +++ b/webapp/e2e/steps/logout_positive_logged_user.steps.js @@ -13,7 +13,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = process.env.GITHUB_ACTIONS - ? await puppeteer.launch() + ? await puppeteer.launch({ ignoreHTTPSErrors: true }) : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout diff --git a/webapp/e2e/steps/logout_positive_non_logged_user.steps.js b/webapp/e2e/steps/logout_positive_non_logged_user.steps.js index 5949c001..7b0d29f6 100644 --- a/webapp/e2e/steps/logout_positive_non_logged_user.steps.js +++ b/webapp/e2e/steps/logout_positive_non_logged_user.steps.js @@ -18,7 +18,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = process.env.GITHUB_ACTIONS - ? await puppeteer.launch() + ? await puppeteer.launch({ ignoreHTTPSErrors: true }) : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout diff --git a/webapp/e2e/steps/playing_game_negative_non_logged_user.steps.js b/webapp/e2e/steps/playing_game_negative_non_logged_user.steps.js index 2310d88c..02fa571b 100644 --- a/webapp/e2e/steps/playing_game_negative_non_logged_user.steps.js +++ b/webapp/e2e/steps/playing_game_negative_non_logged_user.steps.js @@ -19,7 +19,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = process.env.GITHUB_ACTIONS - ? await puppeteer.launch() + ? await puppeteer.launch({ ignoreHTTPSErrors: true }) : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout diff --git a/webapp/e2e/steps/register_negative_blank_password.steps.js b/webapp/e2e/steps/register_negative_blank_password.steps.js index 077cbcb0..a665118e 100644 --- a/webapp/e2e/steps/register_negative_blank_password.steps.js +++ b/webapp/e2e/steps/register_negative_blank_password.steps.js @@ -13,7 +13,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = process.env.GITHUB_ACTIONS - ? await puppeteer.launch() + ? await puppeteer.launch({ ignoreHTTPSErrors: true }) : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout diff --git a/webapp/e2e/steps/register_negative_blank_repeated_password.steps.js b/webapp/e2e/steps/register_negative_blank_repeated_password.steps.js index b1fa64a1..61dd0b02 100644 --- a/webapp/e2e/steps/register_negative_blank_repeated_password.steps.js +++ b/webapp/e2e/steps/register_negative_blank_repeated_password.steps.js @@ -14,7 +14,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = process.env.GITHUB_ACTIONS - ? await puppeteer.launch() + ? await puppeteer.launch({ ignoreHTTPSErrors: true }) : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout diff --git a/webapp/e2e/steps/register_negative_blank_username.steps.js b/webapp/e2e/steps/register_negative_blank_username.steps.js index 03a869e1..fc50429d 100644 --- a/webapp/e2e/steps/register_negative_blank_username.steps.js +++ b/webapp/e2e/steps/register_negative_blank_username.steps.js @@ -14,7 +14,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = process.env.GITHUB_ACTIONS - ? await puppeteer.launch() + ? await puppeteer.launch({ ignoreHTTPSErrors: true }) : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout diff --git a/webapp/e2e/steps/register_negative_email_already_in_use_form.steps.js b/webapp/e2e/steps/register_negative_email_already_in_use_form.steps.js index ec1876f1..f1044748 100644 --- a/webapp/e2e/steps/register_negative_email_already_in_use_form.steps.js +++ b/webapp/e2e/steps/register_negative_email_already_in_use_form.steps.js @@ -15,7 +15,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = process.env.GITHUB_ACTIONS - ? await puppeteer.launch() + ? await puppeteer.launch({ ignoreHTTPSErrors: true }) : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout diff --git a/webapp/e2e/steps/register_negative_username_already_in_use_form.steps.js b/webapp/e2e/steps/register_negative_username_already_in_use_form.steps.js index 21b213eb..11b0cd3a 100644 --- a/webapp/e2e/steps/register_negative_username_already_in_use_form.steps.js +++ b/webapp/e2e/steps/register_negative_username_already_in_use_form.steps.js @@ -15,7 +15,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = process.env.GITHUB_ACTIONS - ? await puppeteer.launch() + ? await puppeteer.launch({ ignoreHTTPSErrors: true }) : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout diff --git a/webapp/e2e/steps/register_negative_wrong_email_format.steps.js b/webapp/e2e/steps/register_negative_wrong_email_format.steps.js index fd799f4e..7413296e 100644 --- a/webapp/e2e/steps/register_negative_wrong_email_format.steps.js +++ b/webapp/e2e/steps/register_negative_wrong_email_format.steps.js @@ -13,7 +13,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = process.env.GITHUB_ACTIONS - ? await puppeteer.launch() + ? await puppeteer.launch({ ignoreHTTPSErrors: true }) : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout diff --git a/webapp/e2e/steps/seeing_rules_negative_non_logged_user.steps.js b/webapp/e2e/steps/seeing_rules_negative_non_logged_user.steps.js index 39d2d324..b7754271 100644 --- a/webapp/e2e/steps/seeing_rules_negative_non_logged_user.steps.js +++ b/webapp/e2e/steps/seeing_rules_negative_non_logged_user.steps.js @@ -19,7 +19,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = process.env.GITHUB_ACTIONS - ? await puppeteer.launch() + ? await puppeteer.launch({ ignoreHTTPSErrors: true }) : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout diff --git a/webapp/e2e/steps/seeing_rules_positive.steps.js b/webapp/e2e/steps/seeing_rules_positive.steps.js index 96c501e0..f73ef6d3 100644 --- a/webapp/e2e/steps/seeing_rules_positive.steps.js +++ b/webapp/e2e/steps/seeing_rules_positive.steps.js @@ -18,7 +18,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = process.env.GITHUB_ACTIONS - ? await puppeteer.launch() + ? await puppeteer.launch({ ignoreHTTPSErrors: true }) : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout diff --git a/webapp/e2e/steps/seeing_stats_negative_non_logged_user.steps.js b/webapp/e2e/steps/seeing_stats_negative_non_logged_user.steps.js index 1f0813a6..28c723c5 100644 --- a/webapp/e2e/steps/seeing_stats_negative_non_logged_user.steps.js +++ b/webapp/e2e/steps/seeing_stats_negative_non_logged_user.steps.js @@ -19,7 +19,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = process.env.GITHUB_ACTIONS - ? await puppeteer.launch() + ? await puppeteer.launch({ ignoreHTTPSErrors: true }) : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout diff --git a/webapp/e2e/steps/seeing_stats_positive.steps.js b/webapp/e2e/steps/seeing_stats_positive.steps.js index d9e6ba0c..75fe405e 100644 --- a/webapp/e2e/steps/seeing_stats_positive.steps.js +++ b/webapp/e2e/steps/seeing_stats_positive.steps.js @@ -19,7 +19,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = process.env.GITHUB_ACTIONS - ? await puppeteer.launch() + ? await puppeteer.launch({ ignoreHTTPSErrors: true }) : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout From f820bc4a3dc74fbb6613329c85176fede444bd48 Mon Sep 17 00:00:00 2001 From: "Dario G. Mori" Date: Sun, 5 May 2024 19:22:22 +0200 Subject: [PATCH 11/24] fix: fixed register --- webapp/e2e/jest.config.js | 2 +- .../register_negative_blank_username.steps.js | 100 +------------ ...egative_email_already_in_use_form.steps.js | 128 +++++------------ ...tive_username_already_in_use_form.steps.js | 136 ++++++------------ ...ister_negative_wrong_email_format.steps.js | 2 +- 5 files changed, 79 insertions(+), 289 deletions(-) diff --git a/webapp/e2e/jest.config.js b/webapp/e2e/jest.config.js index 0586f4a8..9efab019 100644 --- a/webapp/e2e/jest.config.js +++ b/webapp/e2e/jest.config.js @@ -1,6 +1,6 @@ module.exports = { testMatch: ["**/playing_full_game_pos*.steps.js","**/login_register_negative_bad_email_format.steps.js","**/login_register_negative_blank_email_credentials.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"], + ,"**/about_positive_non_logged_user_seeing_about_screen.steps.js","**/login_register_negative_blank_password_credentials.steps.js","**/register*.steps.js"], moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json", "node"], testTimeout: 30000 } \ No newline at end of file diff --git a/webapp/e2e/steps/register_negative_blank_username.steps.js b/webapp/e2e/steps/register_negative_blank_username.steps.js index fc50429d..cbd744ef 100644 --- a/webapp/e2e/steps/register_negative_blank_username.steps.js +++ b/webapp/e2e/steps/register_negative_blank_username.steps.js @@ -36,7 +36,7 @@ defineFeature(feature, test => { when("The user fills its data in the form leaving the username field in blank", async () => { await expect(page).toClick("span[class='chakra-link css-1bicqx'"); await expect(page).toFill("input[id='user'", user); - await expect(page).toFill("input[id='username'", username); + await expect(page).toFill("input[id='username'", ""); await expect(page).toFill("#password", password); await expect(page).toFill("input[id='field-:r5:']", password); @@ -68,101 +68,3 @@ defineFeature(feature, test => { }); - -/** - * Note: e2e Testing purposes only! - * Auxiliar function for logging out an user from any directory of the user. - * Beware if the user is playing a game when logging out - * It also ensures the task has been performed successfully. - * - * @param {*} page The website - */ -async function logOutUser(page) { - // Logging out - await expect(page).toClick("#lateralMenuButton"); - await expect(page).toClick("button[data-testid='LogOut']"); - - // Checking for the log out to be sucessful - await new Promise(resolve => setTimeout(resolve, 6000)); - - - let header = await page.$eval("button[data-testid='Login']", (element) => { - return element.innerHTML - }) - let value = header === "Login" || "Iniciar sesión"; - - expect(value).toBeTruthy(); -} - -/** -* Note: e2e Testing purposes only! -* Auxiliar function for login an user using its credentials from the root directory of the website. -* It also ensures the task has been performed successfully. -* -* @param username The username for the user. Currently we are using codes for each test case. -* @param email The email for the user. If none is defined, the username (a code) + '@gmail.com' is used -* @param password The password for the user. If none is defined, the username (a code) + '.ps' is used -* Beware of constraits for the user password. -* @param page The website -*/ -async function loginUserFromRootDirectory(username, email = username + "@gmail.com", password = username + ".ps", page) { - - // login process - await expect(page).toClick("button[data-testid='Login'"); - await expect(page).toFill("#user", email); - await expect(page).toFill("#password", password); - await expect(page).toClick("button[data-testid='Login'"); - - // Checking for the process to be correct - await new Promise(resolve => setTimeout(resolve, 6000)); // 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(); - -} - -/** -* Note: e2e Testing purposes only! -* Auxiliar function for registering a new user from the root directory of the website. -* It also ensures the task has been performed successfully. -* -* @param {*} username The username for the new user. Currently we are using codes for each test case. -* @param {*} page The website -* @returns An array with the credentials of the user created [email, username] -*/ -async function registerUserFromRootDirectory(username, page) { - // Credentials for the new user - let email = username + "@email.com" - let password = username + "ps" - - // Registeing 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, 6000)); // 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]; -} - -/** -* Note: e2e Testing purposes only! -* Auxiliar function that times out the tests for some time, so the page can be fully loaded. -* @param {*} timeout_ms Amount of ms to wait. -*/ -async function waitForPageToLoad(timeout_ms = 6000) { - await new Promise(resolve => setTimeout(resolve, timeout_ms)); - -} - diff --git a/webapp/e2e/steps/register_negative_email_already_in_use_form.steps.js b/webapp/e2e/steps/register_negative_email_already_in_use_form.steps.js index f1044748..c3049b88 100644 --- a/webapp/e2e/steps/register_negative_email_already_in_use_form.steps.js +++ b/webapp/e2e/steps/register_negative_email_already_in_use_form.steps.js @@ -73,100 +73,42 @@ defineFeature(feature, test => { }); - - -/** - * Note: e2e Testing purposes only! - * Auxiliar function for logging out an user from any directory of the user. - * Beware if the user is playing a game when logging out - * It also ensures the task has been performed successfully. - * - * @param {*} page The website - */ -async function logOutUser(page) { - // Logging out - await expect(page).toClick("#lateralMenuButton"); - await expect(page).toClick("button[data-testid='LogOut']"); - - // Checking for the log out to be sucessful - waitForPageToLoad(); - let header = await page.$eval("button[data-testid='Login']", (element) => { - return element.innerHTML - }) - let value = header === "Login" || "Iniciar sesión"; - - expect(value).toBeTruthy(); -} - -/** -* Note: e2e Testing purposes only! -* Auxiliar function for login an user using its credentials from the root directory of the website. -* It also ensures the task has been performed successfully. -* -* @param username The username for the user. Currently we are using codes for each test case. -* @param email The email for the user. If none is defined, the username (a code) + '@gmail.com' is used -* @param password The password for the user. If none is defined, the username (a code) + '.ps' is used -* Beware of constraits for the user password. -* @param page The website -*/ -async function loginUserFromRootDirectory(username, email = username + "@gmail.com", password = username + ".ps", page) { - - // login process - await expect(page).toClick("button[data-testid='Login'"); - await expect(page).toFill("#user", email); - await expect(page).toFill("#password", password); - await expect(page).toClick("button[data-testid='Login'"); - - // Checking for the process to be correct - await new Promise(resolve => setTimeout(resolve, 6000)); // 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(); - -} - -/** -* Note: e2e Testing purposes only! -* Auxiliar function for registering a new user from the root directory of the website. -* It also ensures the task has been performed successfully. -* -* @param {*} username The username for the new user. Currently we are using codes for each test case. -* @param {*} page The website -* @returns An array with the credentials of the user created [email, username] -*/ async function registerUserFromRootDirectory(username, page) { - // Credentials for the new user - let email = username + "@email.com" - let password = username + "ps" - - // Registeing 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, 6000)); // 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]; + // 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]; } -/** -* Note: e2e Testing purposes only! -* Auxiliar function that times out the tests for some time, so the page can be fully loaded. -* @param {*} timeout_ms Amount of ms to wait. -*/ -async function waitForPageToLoad(timeout_ms = 6000) { - await new Promise(resolve => setTimeout(resolve, timeout_ms)); - +async function logOutUser(page) { + // Logging out + await expect(page).toClick("#lateralMenuButton"); + await new Promise(resolve => setTimeout(resolve, 5000)); // Waiting for page to fully load + 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(); } - diff --git a/webapp/e2e/steps/register_negative_username_already_in_use_form.steps.js b/webapp/e2e/steps/register_negative_username_already_in_use_form.steps.js index 11b0cd3a..83027a94 100644 --- a/webapp/e2e/steps/register_negative_username_already_in_use_form.steps.js +++ b/webapp/e2e/steps/register_negative_username_already_in_use_form.steps.js @@ -10,7 +10,7 @@ let browser; defineFeature(feature, test => { let username = "t.reg.neg.un_aiu" let user = username + "@gmail.com"; - let password = username + ".psw"; + let password = username + "psw"; beforeAll(async () => { @@ -26,6 +26,11 @@ defineFeature(feature, test => { waitUntil: "networkidle0", }) .catch(() => {}); + + await registerUserFromRootDirectory(username,page); + + await logOutUser(page); + }, 120000); test("The user is not registered in the root directory of the website and tries to create an account", ({given,when,and,then}) => { @@ -67,102 +72,43 @@ defineFeature(feature, test => { }); }); - - -/** - * Note: e2e Testing purposes only! - * Auxiliar function for logging out an user from any directory of the user. - * Beware if the user is playing a game when logging out - * It also ensures the task has been performed successfully. - * - * @param {*} page The website - */ -async function logOutUser(page) { - // Logging out - await expect(page).toClick("#lateralMenuButton"); - await expect(page).toClick("button[data-testid='LogOut']"); - - // Checking for the log out to be sucessful - await new Promise(resolve => setTimeout(resolve, 6000)); - - - let header = await page.$eval("button[data-testid='Login']", (element) => { - return element.innerHTML - }) - let value = header === "Login" || "Iniciar sesión"; - - expect(value).toBeTruthy(); -} - -/** -* Note: e2e Testing purposes only! -* Auxiliar function for login an user using its credentials from the root directory of the website. -* It also ensures the task has been performed successfully. -* -* @param username The username for the user. Currently we are using codes for each test case. -* @param email The email for the user. If none is defined, the username (a code) + '@gmail.com' is used -* @param password The password for the user. If none is defined, the username (a code) + '.ps' is used -* Beware of constraits for the user password. -* @param page The website -*/ -async function loginUserFromRootDirectory(username, email = username + "@gmail.com", password = username + ".ps", page) { - - // login process - await expect(page).toClick("button[data-testid='Login'"); - await expect(page).toFill("#user", email); - await expect(page).toFill("#password", password); - await expect(page).toClick("button[data-testid='Login'"); - - // Checking for the process to be correct - await new Promise(resolve => setTimeout(resolve, 6000)); // 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(); - -} - -/** -* Note: e2e Testing purposes only! -* Auxiliar function for registering a new user from the root directory of the website. -* It also ensures the task has been performed successfully. -* -* @param {*} username The username for the new user. Currently we are using codes for each test case. -* @param {*} page The website -* @returns An array with the credentials of the user created [email, username] -*/ async function registerUserFromRootDirectory(username, page) { - // Credentials for the new user - let email = username + "@email.com" - let password = username + "ps" - - // Registeing 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, 6000)); // 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]; + // 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]; } -/** -* Note: e2e Testing purposes only! -* Auxiliar function that times out the tests for some time, so the page can be fully loaded. -* @param {*} timeout_ms Amount of ms to wait. -*/ -async function waitForPageToLoad(timeout_ms = 6000) { - await new Promise(resolve => setTimeout(resolve, timeout_ms)); - +async function logOutUser(page) { + // Logging out + await expect(page).toClick("#lateralMenuButton"); + await new Promise(resolve => setTimeout(resolve, 5000)); // Waiting for page to fully load + 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(); } diff --git a/webapp/e2e/steps/register_negative_wrong_email_format.steps.js b/webapp/e2e/steps/register_negative_wrong_email_format.steps.js index 7413296e..664b17fe 100644 --- a/webapp/e2e/steps/register_negative_wrong_email_format.steps.js +++ b/webapp/e2e/steps/register_negative_wrong_email_format.steps.js @@ -8,7 +8,7 @@ let browser; defineFeature(feature, test => { let username = "t.reg.neg.wr_em"; - let user = username + "@gmail.com"; + let user = username ; let password = username + ".psw"; beforeAll(async () => { From 0a656c41e56ce4af0bc2a555be0a8fd0ad675c9d Mon Sep 17 00:00:00 2001 From: "Dario G. Mori" Date: Sun, 5 May 2024 19:37:43 +0200 Subject: [PATCH 12/24] fix: seeing tests --- webapp/e2e/jest.config.js | 3 +- ...ing_game_negative_non_logged_user.steps.js | 12 +--- ...ng_rules_negative_non_logged_user.steps.js | 13 +--- .../e2e/steps/seeing_rules_positive.steps.js | 59 ++++++++++++++++--- ...ng_stats_negative_non_logged_user.steps.js | 14 +---- .../e2e/steps/seeing_stats_positive.steps.js | 54 +++++++++++++++-- 6 files changed, 105 insertions(+), 50 deletions(-) diff --git a/webapp/e2e/jest.config.js b/webapp/e2e/jest.config.js index 9efab019..e4673362 100644 --- a/webapp/e2e/jest.config.js +++ b/webapp/e2e/jest.config.js @@ -1,6 +1,5 @@ module.exports = { - testMatch: ["**/playing_full_game_pos*.steps.js","**/login_register_negative_bad_email_format.steps.js","**/login_register_negative_blank_email_credentials.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","**/login_register_negative_blank_password_credentials.steps.js","**/register*.steps.js"], + testMatch: ["**/playing*.steps.js","**/login*.steps.js","**/about*.steps.js","**/register*.steps.js","**/seeing*.steps.js"], moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json", "node"], testTimeout: 30000 } \ No newline at end of file diff --git a/webapp/e2e/steps/playing_game_negative_non_logged_user.steps.js b/webapp/e2e/steps/playing_game_negative_non_logged_user.steps.js index 02fa571b..f1674fd7 100644 --- a/webapp/e2e/steps/playing_game_negative_non_logged_user.steps.js +++ b/webapp/e2e/steps/playing_game_negative_non_logged_user.steps.js @@ -12,11 +12,6 @@ let browser; defineFeature(feature, test => { - let username = "t.play.neg" - let user; - let password; - - beforeAll(async () => { browser = process.env.GITHUB_ACTIONS ? await puppeteer.launch({ ignoreHTTPSErrors: true }) @@ -33,9 +28,6 @@ defineFeature(feature, test => { }, 120000); test("A non-logged user wants to play a new game", ({given,when,then}) => { - let username = "pepe" - let user = username + "@pepe.com" - let password = "pepe" let gameURL = "http://localhost:3000/dashboard/game"; @@ -44,7 +36,7 @@ defineFeature(feature, test => { }); when('Entering the endpoint via URL', async() => { - waitForPageToLoad(); + await new Promise(resolve => setTimeout(resolve, 5000)); await page .goto(gameURL, { waitUntil: "networkidle0", @@ -55,7 +47,7 @@ defineFeature(feature, test => { then('No new game is created and the user is redirected to the log in screen', async() => { - waitForPageToLoad(); + await new Promise(resolve => setTimeout(resolve, 5000)); let header = await page.$eval("button[data-testid='Login']", (element) => { return element.innerHTML }) diff --git a/webapp/e2e/steps/seeing_rules_negative_non_logged_user.steps.js b/webapp/e2e/steps/seeing_rules_negative_non_logged_user.steps.js index b7754271..2e36fe78 100644 --- a/webapp/e2e/steps/seeing_rules_negative_non_logged_user.steps.js +++ b/webapp/e2e/steps/seeing_rules_negative_non_logged_user.steps.js @@ -1,8 +1,3 @@ -import { registerUserFromRootDirectory}from '../e2e_utils/e2e_utils_register.js'; -import { waitForPageToLoad } from '../e2e_utils/e2e_utils_timeout.js'; -import { logOutUser } from '../e2e_utils/e2e_utils_logout.js'; -import { loginUserFromRootDirectory } from '../e2e_utils/e2e_utils_login.js' - const { defineFeature, loadFeature }=require('jest-cucumber'); const puppeteer = require('puppeteer'); const setDefaultOptions = require("expect-puppeteer").setDefaultOptions; @@ -12,10 +7,6 @@ let browser; defineFeature(feature, test => { - let username = "t.rules.neg" - let user; - let password; - beforeAll(async () => { browser = process.env.GITHUB_ACTIONS @@ -36,7 +27,7 @@ defineFeature(feature, test => { let gameURL = "http://localhost:3000/dashboard/game"; given('A non-logged user in main menu', async () => { - waitForPageToLoad(); + await new Promise(resolve => setTimeout(resolve, 5000)); let header = await page.$eval("button[data-testid='Login']", (element) => { return element.innerHTML }) @@ -54,7 +45,7 @@ defineFeature(feature, test => { }); then('The user is redirected to the log in screen', async() => { - waitForPageToLoad(); + await new Promise(resolve => setTimeout(resolve, 5000)); let header = await page.$eval("h2[class='chakra-heading css-79qjat']", (element) => { return element.innerHTML }) diff --git a/webapp/e2e/steps/seeing_rules_positive.steps.js b/webapp/e2e/steps/seeing_rules_positive.steps.js index f73ef6d3..18fec061 100644 --- a/webapp/e2e/steps/seeing_rules_positive.steps.js +++ b/webapp/e2e/steps/seeing_rules_positive.steps.js @@ -1,8 +1,3 @@ -import { registerUserFromRootDirectory}from '../e2e_utils/e2e_utils_register.js'; -import { waitForPageToLoad } from '../e2e_utils/e2e_utils_timeout.js'; -import { logOutUser } from '../e2e_utils/e2e_utils_logout.js'; -import { loginUserFromRootDirectory } from '../e2e_utils/e2e_utils_login.js' - const { defineFeature, loadFeature }=require('jest-cucumber'); const puppeteer = require('puppeteer'); const setDefaultOptions = require("expect-puppeteer").setDefaultOptions; @@ -29,6 +24,12 @@ 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 logged user wants to see the rules for the game", ({given,when,and,then}) => { @@ -46,7 +47,7 @@ defineFeature(feature, test => { await expect(page).toClick("button[data-testid='Login'"); // Checking user is in main screen - waitForPageToLoad(); + await new Promise(resolve => setTimeout(resolve, 5000)); // Waiting for page to fully load let header = await page.$eval("h2[class='chakra-heading css-79qjat']", (element) => { return element.innerHTML }) @@ -57,7 +58,7 @@ defineFeature(feature, test => { }); when('The user presses the button for deploying the lateral menu', async() => { - waitForPageToLoad(); + await new Promise(resolve => setTimeout(resolve, 5000)); // Waiting for page to fully load await expect(page).toClick("#lateralMenuButton"); }); @@ -68,7 +69,7 @@ defineFeature(feature, test => { }); then("The screen shows redirects the user to the rules' screen", async() => { - waitForPageToLoad(); + await new Promise(resolve => setTimeout(resolve, 5000)); // Waiting for page to fully load let header = await page.$eval("h2[class='chakra-heading css-79qjat']", (element) => { return element.innerHTML }) @@ -82,4 +83,44 @@ 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)); // Waiting for page to fully load + 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 diff --git a/webapp/e2e/steps/seeing_stats_negative_non_logged_user.steps.js b/webapp/e2e/steps/seeing_stats_negative_non_logged_user.steps.js index 28c723c5..456d9f0c 100644 --- a/webapp/e2e/steps/seeing_stats_negative_non_logged_user.steps.js +++ b/webapp/e2e/steps/seeing_stats_negative_non_logged_user.steps.js @@ -1,8 +1,3 @@ -import { registerUserFromRootDirectory}from '../e2e_utils/e2e_utils_register.js'; -import { waitForPageToLoad } from '../e2e_utils/e2e_utils_timeout.js'; -import { logOutUser } from '../e2e_utils/e2e_utils_logout.js'; -import { loginUserFromRootDirectory } from '../e2e_utils/e2e_utils_login.js' - const { defineFeature, loadFeature }=require('jest-cucumber'); const puppeteer = require('puppeteer'); const setDefaultOptions = require("expect-puppeteer").setDefaultOptions; @@ -12,11 +7,6 @@ let browser; defineFeature(feature, test => { - let username = "t.stats.neg" - let user; - let password; - - beforeAll(async () => { browser = process.env.GITHUB_ACTIONS ? await puppeteer.launch({ ignoreHTTPSErrors: true }) @@ -36,7 +26,7 @@ defineFeature(feature, test => { let gameURL = "http://localhost:3000/dashboard/game"; given('A non-logged user in main menu', async () => { - waitForPageToLoad(); // Waiting for page to fully load + 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 }) @@ -54,7 +44,7 @@ defineFeature(feature, test => { }); then('The user is redirected to 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[class='chakra-heading css-79qjat']", (element) => { return element.innerHTML }) diff --git a/webapp/e2e/steps/seeing_stats_positive.steps.js b/webapp/e2e/steps/seeing_stats_positive.steps.js index 75fe405e..87c83dd0 100644 --- a/webapp/e2e/steps/seeing_stats_positive.steps.js +++ b/webapp/e2e/steps/seeing_stats_positive.steps.js @@ -1,8 +1,3 @@ -import { registerUserFromRootDirectory}from '../e2e_utils/e2e_utils_register.js'; -import { waitForPageToLoad } from '../e2e_utils/e2e_utils_timeout.js'; -import { logOutUser } from '../e2e_utils/e2e_utils_logout.js'; -import { loginUserFromRootDirectory } from '../e2e_utils/e2e_utils_login.js' - const { defineFeature, loadFeature }=require('jest-cucumber'); const puppeteer = require('puppeteer'); const setDefaultOptions = require("expect-puppeteer").setDefaultOptions; @@ -30,6 +25,12 @@ 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 logged user with many games wants to see its stats", ({given,when,and,then}) => { @@ -83,4 +84,45 @@ 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)); // Waiting for page to fully load + 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 From 4cc108911cd5e991527e76cb70e457412643b3b4 Mon Sep 17 00:00:00 2001 From: "Dario G. Mori" Date: Sun, 5 May 2024 19:53:28 +0200 Subject: [PATCH 13/24] fix: logout and about --- webapp/e2e/jest.config.js | 2 +- ...e_logged_user_seeing_about_screen.steps.js | 2 +- .../logout_positive_logged_user.steps.js | 51 +++++++++++-------- .../logout_positive_non_logged_user.steps.js | 18 +------ 4 files changed, 34 insertions(+), 39 deletions(-) diff --git a/webapp/e2e/jest.config.js b/webapp/e2e/jest.config.js index e4673362..b15fd886 100644 --- a/webapp/e2e/jest.config.js +++ b/webapp/e2e/jest.config.js @@ -1,5 +1,5 @@ module.exports = { - testMatch: ["**/playing*.steps.js","**/login*.steps.js","**/about*.steps.js","**/register*.steps.js","**/seeing*.steps.js"], + testMatch: ["**/about*.steps.js","**/logout*.steps.js"], moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json", "node"], testTimeout: 30000 } \ No newline at end of file diff --git a/webapp/e2e/steps/about_positive_logged_user_seeing_about_screen.steps.js b/webapp/e2e/steps/about_positive_logged_user_seeing_about_screen.steps.js index 520869ed..f2629561 100644 --- a/webapp/e2e/steps/about_positive_logged_user_seeing_about_screen.steps.js +++ b/webapp/e2e/steps/about_positive_logged_user_seeing_about_screen.steps.js @@ -7,7 +7,7 @@ let browser; defineFeature(feature, test => { - let username = "t.about.pos"; + let username = "about_pos"; beforeAll(async () => { browser = process.env.GITHUB_ACTIONS diff --git a/webapp/e2e/steps/logout_positive_logged_user.steps.js b/webapp/e2e/steps/logout_positive_logged_user.steps.js index fd6cc9db..d06f8633 100644 --- a/webapp/e2e/steps/logout_positive_logged_user.steps.js +++ b/webapp/e2e/steps/logout_positive_logged_user.steps.js @@ -7,9 +7,7 @@ let browser; defineFeature(feature, test => { - let username = "t.logOu.pos.logged" - let userEmail; - let password; + let username = "logout_p_logged" beforeAll(async () => { browser = process.env.GITHUB_ACTIONS @@ -25,25 +23,16 @@ defineFeature(feature, test => { }) .catch(() => {}); - // Registering the user before the tests - let credentials = registerUserFromRootDirectory(username, page); - userEmail = credentials[0]; - username = credentials[1]; + // Registering the user before the tests + await registerUserFromRootDirectory(username, page); + }, 120000); test("A logged user wants to log out the webpage", ({given,when,and,then}) => { let gameURL = "http://localhost:3000/dashboard/game"; given('A logged user in main menu', async () => { - let header = await page.$eval("button[data-testid='Login']", (element) => { - return element.innerHTML - }) - let value = header === "Login" || "Iniciar sesión"; - - expect(value).toBeTruthy(); - - - waitForPageToLoad(); + await new Promise(resolve => setTimeout(resolve, 5000)); let newHeader = await page.$eval("h2", (element) => { return element.innerHTML }) @@ -52,7 +41,7 @@ defineFeature(feature, test => { }); when('User presses the button for deploying the lateral menu', async() => { - waitForPageToLoad(); + await new Promise(resolve => setTimeout(resolve, 5000)); await expect(page).toClick("#lateralMenuButton"); }); @@ -63,7 +52,7 @@ defineFeature(feature, test => { }); then('The login screen shows on the user device and the user is no longer logged in', async() => { - waitForPageToLoad(); + await new Promise(resolve => setTimeout(resolve, 5000)); let header = await page.$eval("button[data-testid='Login']", (element) => { return element.innerHTML }) @@ -79,6 +68,26 @@ defineFeature(feature, test => { }); }); -async function waitForPageToLoad (timeout_ms = 6000) { - await new Promise(resolve => setTimeout(resolve, timeout_ms)); -} \ 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]; +} diff --git a/webapp/e2e/steps/logout_positive_non_logged_user.steps.js b/webapp/e2e/steps/logout_positive_non_logged_user.steps.js index 7b0d29f6..344964ec 100644 --- a/webapp/e2e/steps/logout_positive_non_logged_user.steps.js +++ b/webapp/e2e/steps/logout_positive_non_logged_user.steps.js @@ -1,8 +1,3 @@ -import { registerUserFromRootDirectory}from '../e2e_utils/e2e_utils_register.js'; -import { waitForPageToLoad } from '../e2e_utils/e2e_utils_timeout.js'; -import { logOutUser } from '../e2e_utils/e2e_utils_logout.js'; -import { loginUserFromRootDirectory } from '../e2e_utils/e2e_utils_login.js' - const { defineFeature, loadFeature }=require('jest-cucumber'); const puppeteer = require('puppeteer'); const setDefaultOptions = require("expect-puppeteer").setDefaultOptions; @@ -12,10 +7,6 @@ let browser; defineFeature(feature, test => { - let username = "t.logoU.neg.n_log" - let user; - let password; - beforeAll(async () => { browser = process.env.GITHUB_ACTIONS ? await puppeteer.launch({ ignoreHTTPSErrors: true }) @@ -32,14 +23,9 @@ defineFeature(feature, test => { }, 120000); test("A non-logged user wants to log out the webpage", ({given,when,then}) => { - let username = "pepe" - let user = username + "@pepe.com" - let password = "pepe" - - let gameURL = "http://localhost:3000/dashboard/game"; given('A non-logged user in main menu', async () => { - waitForPageToLoad(); + await new Promise(resolve => setTimeout(resolve, 5000)); let header = await page.$eval("button[data-testid='Login']", (element) => { return element.innerHTML }) @@ -57,7 +43,7 @@ defineFeature(feature, test => { }); then('The login screen shows on the user device', async() => { - waitForPageToLoad(); + await new Promise(resolve => setTimeout(resolve, 5000)); let header = await page.$eval("button[data-testid='Login']", (element) => { return element.innerHTML }) From baabe89124d8a15e7ca5d0be0d212020a2cf0c5f Mon Sep 17 00:00:00 2001 From: "Dario G. Mori" Date: Sun, 5 May 2024 20:04:06 +0200 Subject: [PATCH 14/24] fix: uncommented https lines --- api/src/main/resources/application.properties | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/api/src/main/resources/application.properties b/api/src/main/resources/application.properties index df8fd1c2..e129b09c 100644 --- a/api/src/main/resources/application.properties +++ b/api/src/main/resources/application.properties @@ -11,8 +11,8 @@ springdoc.api-docs.path=/swagger/api-docs management.endpoints.web.exposure.include=prometheus management.endpoint.prometheus.enabled=true -#server.port=8443 -#server.ssl.key-alias=tomcat -#server.ssl.key-store=/etc/letsencrypt/live/kiwiq.run.place/keystore.p12 -#server.ssl.key-store-type=PKCS12 -#server.ssl.key-store-password=${SSL_PASSWORD} \ No newline at end of file +server.port=8443 +server.ssl.key-alias=tomcat +server.ssl.key-store=/etc/letsencrypt/live/kiwiq.run.place/keystore.p12 +server.ssl.key-store-type=PKCS12 +server.ssl.key-store-password=${SSL_PASSWORD} \ No newline at end of file From 13d23d40aea1c0828628f7ebad8f97b0c003f400 Mon Sep 17 00:00:00 2001 From: "Dario G. Mori" Date: Sun, 5 May 2024 20:05:16 +0200 Subject: [PATCH 15/24] fix: login register negative --- ...er_negative_incorrect_credentials.steps.js | 56 +++++++++++++++++-- 1 file changed, 50 insertions(+), 6 deletions(-) diff --git a/webapp/e2e/steps/login_register_negative_incorrect_credentials.steps.js b/webapp/e2e/steps/login_register_negative_incorrect_credentials.steps.js index 962bad69..66b941fc 100644 --- a/webapp/e2e/steps/login_register_negative_incorrect_credentials.steps.js +++ b/webapp/e2e/steps/login_register_negative_incorrect_credentials.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; @@ -27,12 +25,17 @@ 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 they do not match any registered user", ({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 }) @@ -46,7 +49,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 }) @@ -65,7 +68,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 }) @@ -80,4 +83,45 @@ 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)); // Waiting for page to fully load + 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 From 89f8204a299759e6bcf95816230821cb42cd0f6b Mon Sep 17 00:00:00 2001 From: "Dario G. Mori" Date: Sun, 5 May 2024 20:05:22 +0200 Subject: [PATCH 16/24] fix: run all tests --- webapp/e2e/jest.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp/e2e/jest.config.js b/webapp/e2e/jest.config.js index b15fd886..a1e2040a 100644 --- a/webapp/e2e/jest.config.js +++ b/webapp/e2e/jest.config.js @@ -1,5 +1,5 @@ module.exports = { - testMatch: ["**/about*.steps.js","**/logout*.steps.js"], + testMatch: ["**/*.steps.js"], moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json", "node"], testTimeout: 30000 } \ No newline at end of file From b1974fd1c73db00d269ed592321b72577eb577dd Mon Sep 17 00:00:00 2001 From: "Dario G. Mori" Date: Sun, 5 May 2024 20:28:52 +0200 Subject: [PATCH 17/24] fix: some fixes tests --- ...ister_negative_incorrect_credentials.steps.js | 4 ++-- .../steps/logout_positive_logged_user.steps.js | 16 ++++++---------- ...laying_game_negative_non_logged_user.steps.js | 5 ----- webapp/e2e/steps/seeing_rules_positive.steps.js | 4 ++-- webapp/e2e/steps/seeing_stats_positive.steps.js | 4 ++-- 5 files changed, 12 insertions(+), 21 deletions(-) diff --git a/webapp/e2e/steps/login_register_negative_incorrect_credentials.steps.js b/webapp/e2e/steps/login_register_negative_incorrect_credentials.steps.js index 66b941fc..1aaeb444 100644 --- a/webapp/e2e/steps/login_register_negative_incorrect_credentials.steps.js +++ b/webapp/e2e/steps/login_register_negative_incorrect_credentials.steps.js @@ -9,8 +9,8 @@ let browser; defineFeature(feature, test => { let username = "t.login.neg.bad_crd" - let user; - let password; + let user = "@email.com"; + let password = "wrongpassword"; beforeAll(async () => { browser = process.env.GITHUB_ACTIONS diff --git a/webapp/e2e/steps/logout_positive_logged_user.steps.js b/webapp/e2e/steps/logout_positive_logged_user.steps.js index d06f8633..5c32d1a1 100644 --- a/webapp/e2e/steps/logout_positive_logged_user.steps.js +++ b/webapp/e2e/steps/logout_positive_logged_user.steps.js @@ -23,21 +23,16 @@ defineFeature(feature, test => { }) .catch(() => {}); - // Registering the user before the tests - await registerUserFromRootDirectory(username, page); + + // Logging it out + await logOutUser(page); }, 120000); test("A logged user wants to log out the webpage", ({given,when,and,then}) => { - let gameURL = "http://localhost:3000/dashboard/game"; - given('A logged user in main menu', async () => { - await new Promise(resolve => setTimeout(resolve, 5000)); - let newHeader = await page.$eval("h2", (element) => { - return element.innerHTML - }) - let newValue = newHeader === "Bienvenid@ " + username || header === "Welcome " + username; - expect(newValue).toBeTruthy(); + // Registering the user before the tests + await registerUserFromRootDirectory(username, page); }); when('User presses the button for deploying the lateral menu', async() => { @@ -91,3 +86,4 @@ async function registerUserFromRootDirectory(username, page) { return [email, password]; } + diff --git a/webapp/e2e/steps/playing_game_negative_non_logged_user.steps.js b/webapp/e2e/steps/playing_game_negative_non_logged_user.steps.js index f1674fd7..320abdb4 100644 --- a/webapp/e2e/steps/playing_game_negative_non_logged_user.steps.js +++ b/webapp/e2e/steps/playing_game_negative_non_logged_user.steps.js @@ -1,8 +1,3 @@ -import { registerUserFromRootDirectory}from '../e2e_utils/e2e_utils_register.js'; -import { waitForPageToLoad } from '../e2e_utils/e2e_utils_timeout.js'; -import { logOutUser } from '../e2e_utils/e2e_utils_logout.js'; -import { loginUserFromRootDirectory } from '../e2e_utils/e2e_utils_login.js' - const { defineFeature, loadFeature }=require('jest-cucumber'); const puppeteer = require('puppeteer'); const setDefaultOptions = require("expect-puppeteer").setDefaultOptions; diff --git a/webapp/e2e/steps/seeing_rules_positive.steps.js b/webapp/e2e/steps/seeing_rules_positive.steps.js index 18fec061..afd61b96 100644 --- a/webapp/e2e/steps/seeing_rules_positive.steps.js +++ b/webapp/e2e/steps/seeing_rules_positive.steps.js @@ -8,8 +8,8 @@ let browser; defineFeature(feature, test => { let username = "t.rules.pos" - let user; - let password; + let user = username + "@email.com"; + let password = username + "psw"; beforeAll(async () => { browser = process.env.GITHUB_ACTIONS diff --git a/webapp/e2e/steps/seeing_stats_positive.steps.js b/webapp/e2e/steps/seeing_stats_positive.steps.js index 87c83dd0..55e70202 100644 --- a/webapp/e2e/steps/seeing_stats_positive.steps.js +++ b/webapp/e2e/steps/seeing_stats_positive.steps.js @@ -8,8 +8,8 @@ let browser; defineFeature(feature, test => { let username = "t.stats.pos" - let user; - let password; + let user = username + "@email.com"; + let password = username +"psw"; beforeAll(async () => { From f5e9321d079eb36a27f21a69b1352ec0f112f325 Mon Sep 17 00:00:00 2001 From: "Dario G. Mori" Date: Sun, 5 May 2024 20:46:06 +0200 Subject: [PATCH 18/24] fix:fixed login register negative --- .../login_register_negative_incorrect_credentials.steps.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webapp/e2e/steps/login_register_negative_incorrect_credentials.steps.js b/webapp/e2e/steps/login_register_negative_incorrect_credentials.steps.js index 1aaeb444..50db0cd4 100644 --- a/webapp/e2e/steps/login_register_negative_incorrect_credentials.steps.js +++ b/webapp/e2e/steps/login_register_negative_incorrect_credentials.steps.js @@ -8,8 +8,8 @@ let browser; defineFeature(feature, test => { - let username = "t.login.neg.bad_crd" - let user = "@email.com"; + let username = "login_bad_crd" + let user = username + "@email.com"; let password = "wrongpassword"; beforeAll(async () => { From 5bfa0324eb944c13fd5a5aeb34c3c72153822b06 Mon Sep 17 00:00:00 2001 From: "Dario G. Mori" Date: Sun, 5 May 2024 20:50:00 +0200 Subject: [PATCH 19/24] fix:fixed logout positive logged user --- webapp/e2e/steps/logout_positive_logged_user.steps.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/webapp/e2e/steps/logout_positive_logged_user.steps.js b/webapp/e2e/steps/logout_positive_logged_user.steps.js index 5c32d1a1..535d607f 100644 --- a/webapp/e2e/steps/logout_positive_logged_user.steps.js +++ b/webapp/e2e/steps/logout_positive_logged_user.steps.js @@ -23,10 +23,6 @@ defineFeature(feature, test => { }) .catch(() => {}); - - // Logging it out - await logOutUser(page); - }, 120000); test("A logged user wants to log out the webpage", ({given,when,and,then}) => { From b4968c388418b9d0e8eb434f12d74c4321e2743f Mon Sep 17 00:00:00 2001 From: "Dario G. Mori" Date: Sun, 5 May 2024 21:04:15 +0200 Subject: [PATCH 20/24] fix:fixed register --- webapp/e2e/steps/register_negative_blank_password.steps.js | 2 +- .../steps/register_negative_blank_repeated_password.steps.js | 2 +- webapp/e2e/steps/register_negative_blank_username.steps.js | 2 +- .../register_negative_email_already_in_use_form.steps.js | 2 +- .../register_negative_username_already_in_use_form.steps.js | 4 ++-- .../e2e/steps/register_negative_wrong_email_format.steps.js | 2 +- webapp/e2e/steps/register_positive_form.steps.js | 2 +- webapp/src/pages/Signup.jsx | 1 + 8 files changed, 9 insertions(+), 8 deletions(-) diff --git a/webapp/e2e/steps/register_negative_blank_password.steps.js b/webapp/e2e/steps/register_negative_blank_password.steps.js index a665118e..d87613c1 100644 --- a/webapp/e2e/steps/register_negative_blank_password.steps.js +++ b/webapp/e2e/steps/register_negative_blank_password.steps.js @@ -36,7 +36,7 @@ defineFeature(feature, test => { await expect(page).toFill("input[id='user'", user); await expect(page).toFill("input[id='username'", username); await expect(page).toFill("#password", ""); // Blank password - await expect(page).toFill("input[id='field-:r5:']", password); + await expect(page).toFill("input[data-testid='repeat-password']", ""); }); diff --git a/webapp/e2e/steps/register_negative_blank_repeated_password.steps.js b/webapp/e2e/steps/register_negative_blank_repeated_password.steps.js index 61dd0b02..afac8c0f 100644 --- a/webapp/e2e/steps/register_negative_blank_repeated_password.steps.js +++ b/webapp/e2e/steps/register_negative_blank_repeated_password.steps.js @@ -37,7 +37,7 @@ defineFeature(feature, test => { await expect(page).toFill("input[id='user'", user); await expect(page).toFill("input[id='username'", username); await expect(page).toFill("#password", password); - await expect(page).toFill("input[id='field-:r5:']", ""); // Blank password + await expect(page).toFill("input[data-testid='repeat-password']", ""); // Blank password }); diff --git a/webapp/e2e/steps/register_negative_blank_username.steps.js b/webapp/e2e/steps/register_negative_blank_username.steps.js index cbd744ef..800db9e4 100644 --- a/webapp/e2e/steps/register_negative_blank_username.steps.js +++ b/webapp/e2e/steps/register_negative_blank_username.steps.js @@ -38,7 +38,7 @@ defineFeature(feature, test => { await expect(page).toFill("input[id='user'", user); await expect(page).toFill("input[id='username'", ""); await expect(page).toFill("#password", password); - await expect(page).toFill("input[id='field-:r5:']", password); + await expect(page).toFill("input[data-testid='repeat-password']", password); }); diff --git a/webapp/e2e/steps/register_negative_email_already_in_use_form.steps.js b/webapp/e2e/steps/register_negative_email_already_in_use_form.steps.js index c3049b88..a987dfae 100644 --- a/webapp/e2e/steps/register_negative_email_already_in_use_form.steps.js +++ b/webapp/e2e/steps/register_negative_email_already_in_use_form.steps.js @@ -45,7 +45,7 @@ defineFeature(feature, test => { 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).toFill("input[data-testid='repeat-password']", password); }); diff --git a/webapp/e2e/steps/register_negative_username_already_in_use_form.steps.js b/webapp/e2e/steps/register_negative_username_already_in_use_form.steps.js index 83027a94..fc91df33 100644 --- a/webapp/e2e/steps/register_negative_username_already_in_use_form.steps.js +++ b/webapp/e2e/steps/register_negative_username_already_in_use_form.steps.js @@ -40,10 +40,10 @@ defineFeature(feature, test => { when("The user fills the data in the form using an already used username", async () => { await expect(page).toClick("span[class='chakra-link css-1bicqx'"); - await expect(page).toFill("input[id='user'", user); + await expect(page).toFill("input[id='user'", user+"a"); 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).toFill("input[data-testid='repeat-password']", password); }); diff --git a/webapp/e2e/steps/register_negative_wrong_email_format.steps.js b/webapp/e2e/steps/register_negative_wrong_email_format.steps.js index 664b17fe..5025b3af 100644 --- a/webapp/e2e/steps/register_negative_wrong_email_format.steps.js +++ b/webapp/e2e/steps/register_negative_wrong_email_format.steps.js @@ -36,7 +36,7 @@ defineFeature(feature, test => { await expect(page).toFill("input[id='user'", user); 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).toFill("input[data-testid='repeat-password']]", password); }); diff --git a/webapp/e2e/steps/register_positive_form.steps.js b/webapp/e2e/steps/register_positive_form.steps.js index 8b708926..3e732eee 100644 --- a/webapp/e2e/steps/register_positive_form.steps.js +++ b/webapp/e2e/steps/register_positive_form.steps.js @@ -36,7 +36,7 @@ defineFeature(feature, test => { await expect(page).toFill("input[id='user'", userEmail); 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).toFill("input[data-testid='repeat-password']", password); }); diff --git a/webapp/src/pages/Signup.jsx b/webapp/src/pages/Signup.jsx index f9d865fd..b73b1dd0 100644 --- a/webapp/src/pages/Signup.jsx +++ b/webapp/src/pages/Signup.jsx @@ -165,6 +165,7 @@ export default function Signup() { Date: Sun, 5 May 2024 21:09:07 +0200 Subject: [PATCH 21/24] fix:fixed register negative wrong email --- webapp/e2e/steps/register_negative_wrong_email_format.steps.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp/e2e/steps/register_negative_wrong_email_format.steps.js b/webapp/e2e/steps/register_negative_wrong_email_format.steps.js index 5025b3af..318bbf35 100644 --- a/webapp/e2e/steps/register_negative_wrong_email_format.steps.js +++ b/webapp/e2e/steps/register_negative_wrong_email_format.steps.js @@ -36,7 +36,7 @@ defineFeature(feature, test => { await expect(page).toFill("input[id='user'", user); await expect(page).toFill("input[id='username'", username); await expect(page).toFill("#password", password); - await expect(page).toFill("input[data-testid='repeat-password']]", password); + await expect(page).toFill("input[data-testid='repeat-password']", password); }); From 5ae916e6a5ca0a0250238c4180ec5a61ffb09b79 Mon Sep 17 00:00:00 2001 From: "Dario G. Mori" Date: Sun, 5 May 2024 21:14:38 +0200 Subject: [PATCH 22/24] fix:fixed register negative blank password --- webapp/e2e/steps/register_negative_blank_password.steps.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp/e2e/steps/register_negative_blank_password.steps.js b/webapp/e2e/steps/register_negative_blank_password.steps.js index d87613c1..075599ab 100644 --- a/webapp/e2e/steps/register_negative_blank_password.steps.js +++ b/webapp/e2e/steps/register_negative_blank_password.steps.js @@ -36,7 +36,7 @@ defineFeature(feature, test => { await expect(page).toFill("input[id='user'", user); await expect(page).toFill("input[id='username'", username); await expect(page).toFill("#password", ""); // Blank password - await expect(page).toFill("input[data-testid='repeat-password']", ""); + await expect(page).toFill("input[data-testid='repeat-password']", "test3"); }); From 0386a250451111956cf7773e4f74e0b329d89ed0 Mon Sep 17 00:00:00 2001 From: "Dario G. Mori" Date: Sun, 5 May 2024 21:15:32 +0200 Subject: [PATCH 23/24] fix: added timeout --- .../about_positive_non_logged_user_seeing_about_screen.steps.js | 1 + 1 file changed, 1 insertion(+) diff --git a/webapp/e2e/steps/about_positive_non_logged_user_seeing_about_screen.steps.js b/webapp/e2e/steps/about_positive_non_logged_user_seeing_about_screen.steps.js index aed45e63..28d0ac4f 100644 --- a/webapp/e2e/steps/about_positive_non_logged_user_seeing_about_screen.steps.js +++ b/webapp/e2e/steps/about_positive_non_logged_user_seeing_about_screen.steps.js @@ -33,6 +33,7 @@ defineFeature(feature, test => { }); and("the user presses the button for seeing the about section (i)", async () => { + await new Promise(resolve => setTimeout(resolve, 5000)); // Waiting for page to fully load await expect(page).toClick("#aboutButton"); }); From 6b424e37221c588c8b6031eb1598ce77a3265144 Mon Sep 17 00:00:00 2001 From: "Dario G. Mori" Date: Sun, 5 May 2024 21:17:58 +0200 Subject: [PATCH 24/24] fix: added timeout --- ...about_positive_non_logged_user_seeing_about_screen.steps.js | 2 +- webapp/e2e/steps/logout_positive_logged_user.steps.js | 3 ++- webapp/e2e/steps/seeing_rules_positive.steps.js | 3 ++- webapp/e2e/steps/seeing_stats_positive.steps.js | 3 ++- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/webapp/e2e/steps/about_positive_non_logged_user_seeing_about_screen.steps.js b/webapp/e2e/steps/about_positive_non_logged_user_seeing_about_screen.steps.js index 28d0ac4f..86d271c2 100644 --- a/webapp/e2e/steps/about_positive_non_logged_user_seeing_about_screen.steps.js +++ b/webapp/e2e/steps/about_positive_non_logged_user_seeing_about_screen.steps.js @@ -9,7 +9,7 @@ let browser; defineFeature(feature, test => { beforeAll(async () => { browser = process.env.GITHUB_ACTIONS - ? await puppeteer.launch() + ? await puppeteer.launch({ ignoreHTTPSErrors: true}) : await puppeteer.launch({ headless: false, slowMo: 100, ignoreHTTPSErrors: true }); page = await browser.newPage(); //Way of setting up the timeout diff --git a/webapp/e2e/steps/logout_positive_logged_user.steps.js b/webapp/e2e/steps/logout_positive_logged_user.steps.js index 535d607f..8bc91a95 100644 --- a/webapp/e2e/steps/logout_positive_logged_user.steps.js +++ b/webapp/e2e/steps/logout_positive_logged_user.steps.js @@ -38,7 +38,8 @@ defineFeature(feature, test => { }); and('User presses the log out button', async() => { - await expect(page).toClick("button[data-testid='LogOut']"); + await new Promise(resolve => setTimeout(resolve, 5000)); // Waiting for page to fully load + await expect(page).toClick("button[data-testid='LogOut']"); }); diff --git a/webapp/e2e/steps/seeing_rules_positive.steps.js b/webapp/e2e/steps/seeing_rules_positive.steps.js index afd61b96..2b941522 100644 --- a/webapp/e2e/steps/seeing_rules_positive.steps.js +++ b/webapp/e2e/steps/seeing_rules_positive.steps.js @@ -64,7 +64,8 @@ defineFeature(feature, test => { }); and('The user presses the button for seeing the rules', async() => { - await expect(page).toClick("button[data-testid='rules']"); + await new Promise(resolve => setTimeout(resolve, 5000)); // Waiting for page to fully load + await expect(page).toClick("button[data-testid='rules']"); }); diff --git a/webapp/e2e/steps/seeing_stats_positive.steps.js b/webapp/e2e/steps/seeing_stats_positive.steps.js index 55e70202..5d1eac41 100644 --- a/webapp/e2e/steps/seeing_stats_positive.steps.js +++ b/webapp/e2e/steps/seeing_stats_positive.steps.js @@ -65,7 +65,8 @@ defineFeature(feature, test => { }); and('The user presses the button for seeing stats', async() => { - await expect(page).toClick("button[data-testid='statistics']"); + await new Promise(resolve => setTimeout(resolve, 5000)); // Waiting for page to fully load + await expect(page).toClick("button[data-testid='statistics']"); });