From 752edc00cc6170cd9a22e3ef2d0e61e78cc3a639 Mon Sep 17 00:00:00 2001 From: lauratbg Date: Sat, 20 Apr 2024 14:28:11 +0200 Subject: [PATCH 01/28] Login and navbar e2e --- webapp/e2e/features/login.feature | 12 ++++++ webapp/e2e/features/navBar.feature | 13 +++++++ webapp/e2e/steps/login.steps.js | 61 +++++++++++++++++++++++++++++ webapp/e2e/steps/navBar.steps.js | 62 ++++++++++++++++++++++++++++++ webapp/package-lock.json | 13 +++++++ 5 files changed, 161 insertions(+) create mode 100644 webapp/e2e/features/login.feature create mode 100644 webapp/e2e/features/navBar.feature create mode 100644 webapp/e2e/steps/login.steps.js create mode 100644 webapp/e2e/steps/navBar.steps.js diff --git a/webapp/e2e/features/login.feature b/webapp/e2e/features/login.feature new file mode 100644 index 00000000..0f259caf --- /dev/null +++ b/webapp/e2e/features/login.feature @@ -0,0 +1,12 @@ +Feature: Login page functionality + + Scenario: Successful login + Given I am on the login page + When I enter valid credentials + Then I should be redirected to the menu + + Scenario: Failed login + Given I am on the login page + When I enter invalid credentials + Then I should NOT be redirected to the menu + diff --git a/webapp/e2e/features/navBar.feature b/webapp/e2e/features/navBar.feature new file mode 100644 index 00000000..87c66b97 --- /dev/null +++ b/webapp/e2e/features/navBar.feature @@ -0,0 +1,13 @@ +Feature: NavBar functionality + + Scenario: Displaying navbar elements correctly + Given I am on the home page + Then The navbar elements are visible + + Scenario: Changing language + Given I am on the home page + When I click on the language button + Then The language options menu should be visible + Then I choose Spanish + Then The navbar should be in Spanish + diff --git a/webapp/e2e/steps/login.steps.js b/webapp/e2e/steps/login.steps.js new file mode 100644 index 00000000..5c3fb3a1 --- /dev/null +++ b/webapp/e2e/steps/login.steps.js @@ -0,0 +1,61 @@ +const puppeteer = require('puppeteer'); +const { defineFeature, loadFeature } = require('jest-cucumber'); +const setDefaultOptions = require('expect-puppeteer').setDefaultOptions; + +const feature = loadFeature('./features/login.feature'); + +let page; +let browser; + +defineFeature(feature, test => { + + beforeAll(async () => { + browser = await puppeteer.launch({ + slowMo: 20, + defaultViewport: { width: 1920, height: 1080 }, + args: ['--window-size=1920,1080'] + }); + page = await browser.newPage(); + setDefaultOptions({ timeout: 10000 }); + }); + + test('Successful login', ({ given, when, then }) => { + given('I am on the login page', async () => { + await page.goto('http://localhost:3000/login'); + await page.waitForSelector('.general'); + }); + + when('I enter valid credentials', async () => { + await page.type('input[type="text"]', 'validUsername'); + await page.type('input[type="password"]', 'validPassword'); + await page.click('button[type="submit"]'); + }); + + then('I should be redirected to the menu', async () => { + await page.waitForNavigation(); + expect(page.url()).toContain('/menu'); + }); + }); + + test('Failed login', ({ given, when, then }) => { + given('I am on the login page', async () => { + await page.goto('http://localhost:3000/login'); + await page.waitForSelector('.general'); + }); + + when('I enter invalid credentials', async () => { + await page.type('input[type="text"]', 'invalidUsername'); + await page.type('input[type="password"]', 'invalidPassword'); + await page.click('button[type="submit"]'); + }); + + then('I should NOT be redirected to the menu', async () => { + await page.waitForNavigation(); + expect(page.url()).toContain('/login'); + }); + }); + + afterAll(async () => { + await browser.close(); + }); +}); diff --git a/webapp/e2e/steps/navBar.steps.js b/webapp/e2e/steps/navBar.steps.js new file mode 100644 index 00000000..9664ff4c --- /dev/null +++ b/webapp/e2e/steps/navBar.steps.js @@ -0,0 +1,62 @@ +const puppeteer = require('puppeteer'); +const { defineFeature, loadFeature } = require('jest-cucumber'); +const setDefaultOptions = require('expect-puppeteer').setDefaultOptions; + +const feature = loadFeature('./features/navBar.feature'); + +let page; +let browser; + +defineFeature(feature, test => { + + beforeAll(async () => { + browser = await puppeteer.launch({ + slowMo: 20, + defaultViewport: { width: 1920, height: 1080 }, + args: ['--window-size=1920,1080'] + }); + page = await browser.newPage(); + setDefaultOptions({ timeout: 10000 }); + }); + + test('Displaying navbar elements correctly', ({ given, then }) => { + given('I am on the home page', async () => { + await page.goto('http://localhost:3000/'); + await page.waitForSelector('.navbar-container'); + }); + + then('The navbar elements are visible', async () => { + await expect(page).toMatchElement('.navbar-text', { text: 'Know and win!' }); + await expect(page).toMatchElement('.language-button', { text: 'Language' }); + await expect(page).toMatchElement('.help-button'); + }); + }); + + test('Changing language', ({ given, when, then }) => { + given('I am on the home page', async () => { + await page.goto('http://localhost:3000/'); + await page.waitForSelector('.navbar-container'); + }); + + when('I click on the language button', async () => { + await page.click('.language-button'); + }); + + then('The language options menu should be visible', async () => { + await page.waitForSelector('.MuiMenu-paper', { visible: true }); + }); + + then('I choose Spanish', async () => { + await page.click('text=Spanish'); + }); + + then('The navbar should be in Spanish', async () => { + const navbarText = await page.$eval('.navbar-text', el => el.textContent.trim()); + expect(navbarText).toBe('¡Saber y ganar!'); + }); + }); + + afterAll(async () => { + await browser.close(); + }); +}); diff --git a/webapp/package-lock.json b/webapp/package-lock.json index d4d75e5c..01a7cfde 100644 --- a/webapp/package-lock.json +++ b/webapp/package-lock.json @@ -11691,6 +11691,19 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", From 9cee846c9a5d80610587ac75360d23851c0f2e1b Mon Sep 17 00:00:00 2001 From: lauratbg Date: Sun, 21 Apr 2024 11:54:50 +0200 Subject: [PATCH 02/28] Trying to solve some conflicts and also added tests for instructions --- webapp/e2e/features/instructions.feature | 9 ++++++ webapp/e2e/steps/home.steps.js | 18 +++++------ webapp/e2e/steps/instructions.steps.js | 40 ++++++++++++++++++++++++ webapp/e2e/steps/login.steps.js | 12 +++---- 4 files changed, 64 insertions(+), 15 deletions(-) create mode 100644 webapp/e2e/features/instructions.feature create mode 100644 webapp/e2e/steps/instructions.steps.js diff --git a/webapp/e2e/features/instructions.feature b/webapp/e2e/features/instructions.feature new file mode 100644 index 00000000..f59fda00 --- /dev/null +++ b/webapp/e2e/features/instructions.feature @@ -0,0 +1,9 @@ +Feature: Instructions page functionality + + Scenario: Instructions view is well rendered + Given I am on the instructions page + Then The instructions title is rendered + Then The instructions content is rendered + + + diff --git a/webapp/e2e/steps/home.steps.js b/webapp/e2e/steps/home.steps.js index 770b2a0a..d179ebe0 100644 --- a/webapp/e2e/steps/home.steps.js +++ b/webapp/e2e/steps/home.steps.js @@ -20,16 +20,16 @@ defineFeature(feature, test => { setDefaultOptions({ timeout: 10000 }); }); - test('The text container is initially visible', ({ given, then }) => { - given('I am on the home page', async () => { - await page.goto('http://localhost:3000/home'); - await page.waitForSelector('.general'); - }); + // test('The text container is initially visible', ({ given, then }) => { + // given('I am on the home page', async () => { + // await page.goto('http://localhost:3000/home'); + // await page.waitForSelector('.general'); + // }); - then('The text container should be visible', async () => { - await expect(page).toMatchElement('.text-container.visible'); - }); - }); + // then('The text container should be visible', async () => { + // await expect(page).toMatchElement('.text-container.visible'); + // }); + // }); test('Opening the text container', ({ given, when, then }) => { given('I am on the home page', async () => { diff --git a/webapp/e2e/steps/instructions.steps.js b/webapp/e2e/steps/instructions.steps.js new file mode 100644 index 00000000..0770eaf1 --- /dev/null +++ b/webapp/e2e/steps/instructions.steps.js @@ -0,0 +1,40 @@ +const puppeteer = require('puppeteer'); +const { defineFeature, loadFeature } = require('jest-cucumber'); +const setDefaultOptions = require('expect-puppeteer').setDefaultOptions; + +const feature = loadFeature('./features/instructions.feature'); + +let page; +let browser; + +defineFeature(feature, test => { + + beforeAll(async () => { + browser = await puppeteer.launch({ + slowMo: 20, + defaultViewport: { width: 1920, height: 1080 }, + args: ['--window-size=1920,1080'] + }); + page = await browser.newPage(); + setDefaultOptions({ timeout: 10000 }); + }); + + test('Instructions view is well rendered', ({ given, then }) => { + given('I am on the instructions page', async () => { + await page.goto('http://localhost:3000/instructions'); + await page.waitForSelector('.instructions_title'); + }); + + then('The instructions title is rendered', async () => { + await expect(page).toMatchElement('.instructions_title'); + }); + + then('The instructions content is rendered', async () => { + await expect(page).toMatchElement('.ins_ul'); + }); + }); + + afterAll(async () => { + await browser.close(); + }); +}); diff --git a/webapp/e2e/steps/login.steps.js b/webapp/e2e/steps/login.steps.js index 5c3fb3a1..3623f16c 100644 --- a/webapp/e2e/steps/login.steps.js +++ b/webapp/e2e/steps/login.steps.js @@ -11,12 +11,12 @@ defineFeature(feature, test => { beforeAll(async () => { browser = await puppeteer.launch({ + headless: "new", slowMo: 20, defaultViewport: { width: 1920, height: 1080 }, args: ['--window-size=1920,1080'] }); - page = await browser.newPage(); - setDefaultOptions({ timeout: 10000 }); + }); test('Successful login', ({ given, when, then }) => { @@ -26,8 +26,8 @@ defineFeature(feature, test => { }); when('I enter valid credentials', async () => { - await page.type('input[type="text"]', 'validUsername'); - await page.type('input[type="password"]', 'validPassword'); + await page.type('input[type="text"]', 'ltbg'); + await page.type('input[type="password"]', 'ltbg'); await page.click('button[type="submit"]'); }); @@ -35,7 +35,7 @@ defineFeature(feature, test => { await page.waitForNavigation(); expect(page.url()).toContain('/menu'); }); - }); + }, 60000); test('Failed login', ({ given, when, then }) => { given('I am on the login page', async () => { @@ -53,7 +53,7 @@ defineFeature(feature, test => { await page.waitForNavigation(); expect(page.url()).toContain('/login'); }); - }); + }, 60000); afterAll(async () => { await browser.close(); From 8b9c72dcafacd82ea55792422d8f64462957a11e Mon Sep 17 00:00:00 2001 From: lauratbg Date: Sun, 21 Apr 2024 12:02:10 +0200 Subject: [PATCH 03/28] Changed the beforeall and also some things in login --- webapp/e2e/features/home.feature | 4 ---- webapp/e2e/steps/instructions.steps.js | 18 +++++++++--------- webapp/e2e/steps/login.steps.js | 13 +++++++------ webapp/e2e/steps/navBar.steps.js | 4 ++-- 4 files changed, 18 insertions(+), 21 deletions(-) diff --git a/webapp/e2e/features/home.feature b/webapp/e2e/features/home.feature index dfc7601a..4bf87421 100644 --- a/webapp/e2e/features/home.feature +++ b/webapp/e2e/features/home.feature @@ -1,9 +1,5 @@ Feature: Home page functionality - Scenario: The text container is initially visible - Given I am on the home page - Then The text container should be visible - Scenario: Opening the text container Given I am on the home page When I click on the toggle button to open diff --git a/webapp/e2e/steps/instructions.steps.js b/webapp/e2e/steps/instructions.steps.js index 0770eaf1..9383504d 100644 --- a/webapp/e2e/steps/instructions.steps.js +++ b/webapp/e2e/steps/instructions.steps.js @@ -9,15 +9,15 @@ let browser; defineFeature(feature, test => { - beforeAll(async () => { - browser = await puppeteer.launch({ - slowMo: 20, - defaultViewport: { width: 1920, height: 1080 }, - args: ['--window-size=1920,1080'] - }); - page = await browser.newPage(); - setDefaultOptions({ timeout: 10000 }); - }); + beforeAll(async () => { + browser = await puppeteer.launch({ + headless: "new", + slowMo: 20, + defaultViewport: { width: 1920, height: 1080 }, + args: ['--window-size=1920,1080'] + }); + + }); test('Instructions view is well rendered', ({ given, then }) => { given('I am on the instructions page', async () => { diff --git a/webapp/e2e/steps/login.steps.js b/webapp/e2e/steps/login.steps.js index 3623f16c..2249b0b2 100644 --- a/webapp/e2e/steps/login.steps.js +++ b/webapp/e2e/steps/login.steps.js @@ -11,12 +11,13 @@ defineFeature(feature, test => { beforeAll(async () => { browser = await puppeteer.launch({ - headless: "new", + headless: false, slowMo: 20, defaultViewport: { width: 1920, height: 1080 }, args: ['--window-size=1920,1080'] }); - + page = await browser.newPage(); // Inicialización de la página + setDefaultOptions({ timeout: 10000 }); }); test('Successful login', ({ given, when, then }) => { @@ -32,7 +33,7 @@ defineFeature(feature, test => { }); then('I should be redirected to the menu', async () => { - await page.waitForNavigation(); + await page.waitForNavigation({ waitUntil: 'networkidle0' }); expect(page.url()).toContain('/menu'); }); }, 60000); @@ -50,9 +51,9 @@ defineFeature(feature, test => { }); then('I should NOT be redirected to the menu', async () => { - await page.waitForNavigation(); - expect(page.url()).toContain('/login'); - }); + await page.waitForNavigation({ waitUntil: 'networkidle0' }); + expect(page.url()).toContain('/login'); + }); }, 60000); afterAll(async () => { diff --git a/webapp/e2e/steps/navBar.steps.js b/webapp/e2e/steps/navBar.steps.js index 9664ff4c..32d80a48 100644 --- a/webapp/e2e/steps/navBar.steps.js +++ b/webapp/e2e/steps/navBar.steps.js @@ -11,12 +11,12 @@ defineFeature(feature, test => { beforeAll(async () => { browser = await puppeteer.launch({ + headless: "new", slowMo: 20, defaultViewport: { width: 1920, height: 1080 }, args: ['--window-size=1920,1080'] }); - page = await browser.newPage(); - setDefaultOptions({ timeout: 10000 }); + }); test('Displaying navbar elements correctly', ({ given, then }) => { From 18b1144d529f3c1206c02c455ac91a69201c52dc Mon Sep 17 00:00:00 2001 From: lauratbg Date: Sun, 21 Apr 2024 12:25:49 +0200 Subject: [PATCH 04/28] Changed the before all --- webapp/e2e/steps/home.steps.js | 17 +++++++++-------- webapp/e2e/steps/instructions.steps.js | 14 ++++++++------ webapp/e2e/steps/login.steps.js | 15 ++++++++------- webapp/e2e/steps/navBar.steps.js | 14 ++++++++------ 4 files changed, 33 insertions(+), 27 deletions(-) diff --git a/webapp/e2e/steps/home.steps.js b/webapp/e2e/steps/home.steps.js index d179ebe0..22d6dec1 100644 --- a/webapp/e2e/steps/home.steps.js +++ b/webapp/e2e/steps/home.steps.js @@ -10,15 +10,16 @@ let browser; defineFeature(feature, test => { beforeAll(async () => { - browser = await puppeteer.launch({ - slowMo: 20, - defaultViewport: { width: 1920, height: 1080 }, - args: ['--window-size=1920,1080'] - }); - - page = await browser.newPage(); - setDefaultOptions({ timeout: 10000 }); + browser = await puppeteer.launch({ + headless: "new", // Cambiado a "new" para evitar la advertencia de deprecación + slowMo: 20, + defaultViewport: { width: 1920, height: 1080 }, + args: ['--window-size=1920,1080'] }); + + page = await browser.newPage(); + setDefaultOptions({ timeout: 10000 }); +}); // test('The text container is initially visible', ({ given, then }) => { // given('I am on the home page', async () => { diff --git a/webapp/e2e/steps/instructions.steps.js b/webapp/e2e/steps/instructions.steps.js index 9383504d..1b7382aa 100644 --- a/webapp/e2e/steps/instructions.steps.js +++ b/webapp/e2e/steps/instructions.steps.js @@ -11,13 +11,15 @@ defineFeature(feature, test => { beforeAll(async () => { browser = await puppeteer.launch({ - headless: "new", - slowMo: 20, - defaultViewport: { width: 1920, height: 1080 }, - args: ['--window-size=1920,1080'] - }); - + headless: "new", + slowMo: 20, + defaultViewport: { width: 1920, height: 1080 }, + args: ['--window-size=1920,1080'] }); + + page = await browser.newPage(); + setDefaultOptions({ timeout: 10000 }); + }); test('Instructions view is well rendered', ({ given, then }) => { given('I am on the instructions page', async () => { diff --git a/webapp/e2e/steps/login.steps.js b/webapp/e2e/steps/login.steps.js index 2249b0b2..db712b8c 100644 --- a/webapp/e2e/steps/login.steps.js +++ b/webapp/e2e/steps/login.steps.js @@ -11,14 +11,15 @@ defineFeature(feature, test => { beforeAll(async () => { browser = await puppeteer.launch({ - headless: false, - slowMo: 20, - defaultViewport: { width: 1920, height: 1080 }, - args: ['--window-size=1920,1080'] - }); - page = await browser.newPage(); // Inicialización de la página - setDefaultOptions({ timeout: 10000 }); + headless: "new", + slowMo: 20, + defaultViewport: { width: 1920, height: 1080 }, + args: ['--window-size=1920,1080'] }); + + page = await browser.newPage(); + setDefaultOptions({ timeout: 10000 }); +}); test('Successful login', ({ given, when, then }) => { given('I am on the login page', async () => { diff --git a/webapp/e2e/steps/navBar.steps.js b/webapp/e2e/steps/navBar.steps.js index 32d80a48..09cd50ff 100644 --- a/webapp/e2e/steps/navBar.steps.js +++ b/webapp/e2e/steps/navBar.steps.js @@ -11,13 +11,15 @@ defineFeature(feature, test => { beforeAll(async () => { browser = await puppeteer.launch({ - headless: "new", - slowMo: 20, - defaultViewport: { width: 1920, height: 1080 }, - args: ['--window-size=1920,1080'] - }); - + headless: "new", + slowMo: 20, + defaultViewport: { width: 1920, height: 1080 }, + args: ['--window-size=1920,1080'] }); + + page = await browser.newPage(); + setDefaultOptions({ timeout: 10000 }); +}); test('Displaying navbar elements correctly', ({ given, then }) => { given('I am on the home page', async () => { From ef428305d4342e86ee031744cf5730624e5461eb Mon Sep 17 00:00:00 2001 From: lauratbg Date: Sun, 21 Apr 2024 12:32:58 +0200 Subject: [PATCH 05/28] Chanegd login tests to wait until domcontentloaded --- webapp/e2e/steps/login.steps.js | 71 +++++++++++++++++---------------- 1 file changed, 36 insertions(+), 35 deletions(-) diff --git a/webapp/e2e/steps/login.steps.js b/webapp/e2e/steps/login.steps.js index db712b8c..58be4f0d 100644 --- a/webapp/e2e/steps/login.steps.js +++ b/webapp/e2e/steps/login.steps.js @@ -21,41 +21,42 @@ defineFeature(feature, test => { setDefaultOptions({ timeout: 10000 }); }); - test('Successful login', ({ given, when, then }) => { - given('I am on the login page', async () => { - await page.goto('http://localhost:3000/login'); - await page.waitForSelector('.general'); - }); - - when('I enter valid credentials', async () => { - await page.type('input[type="text"]', 'ltbg'); - await page.type('input[type="password"]', 'ltbg'); - await page.click('button[type="submit"]'); - }); - - then('I should be redirected to the menu', async () => { - await page.waitForNavigation({ waitUntil: 'networkidle0' }); - expect(page.url()).toContain('/menu'); - }); - }, 60000); - - test('Failed login', ({ given, when, then }) => { - given('I am on the login page', async () => { - await page.goto('http://localhost:3000/login'); - await page.waitForSelector('.general'); - }); - - when('I enter invalid credentials', async () => { - await page.type('input[type="text"]', 'invalidUsername'); - await page.type('input[type="password"]', 'invalidPassword'); - await page.click('button[type="submit"]'); - }); - - then('I should NOT be redirected to the menu', async () => { - await page.waitForNavigation({ waitUntil: 'networkidle0' }); - expect(page.url()).toContain('/login'); - }); - }, 60000); +test('Successful login', ({ given, when, then }) => { + given('I am on the login page', async () => { + await page.goto('http://localhost:3000/login'); + await page.waitForSelector('.general'); + }); + + when('I enter valid credentials', async () => { + await page.type('input[type="text"]', 'ltbg'); + await page.type('input[type="password"]', 'ltbg'); + await page.click('button[type="submit"]'); + }); + + then('I should be redirected to the menu', async () => { + await page.waitForNavigation({ waitUntil: 'domcontentloaded' }); + expect(page.url()).toContain('/menu'); + }); +}, 60000); + +test('Failed login', ({ given, when, then }) => { + given('I am on the login page', async () => { + await page.goto('http://localhost:3000/login'); + await page.waitForSelector('.general'); + }); + + when('I enter invalid credentials', async () => { + await page.type('input[type="text"]', 'invalidUsername'); + await page.type('input[type="password"]', 'invalidPassword'); + await page.click('button[type="submit"]'); + }); + + then('I should NOT be redirected to the menu', async () => { + await page.waitForNavigation({ waitUntil: 'domcontentloaded' }); + expect(page.url()).toContain('/login'); + }); +}, 60000); + afterAll(async () => { await browser.close(); From 9ea0ea52c5136037c3a243ea450baf4f5130eded Mon Sep 17 00:00:00 2001 From: lauratbg Date: Wed, 24 Apr 2024 15:11:53 +0200 Subject: [PATCH 06/28] Trying to pass login test --- webapp/e2e/steps/login.steps.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/webapp/e2e/steps/login.steps.js b/webapp/e2e/steps/login.steps.js index 58be4f0d..649117a8 100644 --- a/webapp/e2e/steps/login.steps.js +++ b/webapp/e2e/steps/login.steps.js @@ -28,13 +28,13 @@ test('Successful login', ({ given, when, then }) => { }); when('I enter valid credentials', async () => { - await page.type('input[type="text"]', 'ltbg'); - await page.type('input[type="password"]', 'ltbg'); + await page.type('input[type="text"]', 'username'); + await page.type('input[type="password"]', 'password'); await page.click('button[type="submit"]'); }); then('I should be redirected to the menu', async () => { - await page.waitForNavigation({ waitUntil: 'domcontentloaded' }); + await page.waitForSelector('.divMenu'); expect(page.url()).toContain('/menu'); }); }, 60000); From c30eb8a9d8f10a9c987b59975b5af142706c82b8 Mon Sep 17 00:00:00 2001 From: lauratbg Date: Thu, 25 Apr 2024 14:16:23 +0200 Subject: [PATCH 07/28] Removed login test --- webapp/e2e/features/login.feature | 12 ---- webapp/e2e/steps/login.steps.js | 102 +++++++++++++++--------------- 2 files changed, 51 insertions(+), 63 deletions(-) diff --git a/webapp/e2e/features/login.feature b/webapp/e2e/features/login.feature index 0f259caf..e69de29b 100644 --- a/webapp/e2e/features/login.feature +++ b/webapp/e2e/features/login.feature @@ -1,12 +0,0 @@ -Feature: Login page functionality - - Scenario: Successful login - Given I am on the login page - When I enter valid credentials - Then I should be redirected to the menu - - Scenario: Failed login - Given I am on the login page - When I enter invalid credentials - Then I should NOT be redirected to the menu - diff --git a/webapp/e2e/steps/login.steps.js b/webapp/e2e/steps/login.steps.js index 649117a8..54dc1f6a 100644 --- a/webapp/e2e/steps/login.steps.js +++ b/webapp/e2e/steps/login.steps.js @@ -1,64 +1,64 @@ -const puppeteer = require('puppeteer'); -const { defineFeature, loadFeature } = require('jest-cucumber'); -const setDefaultOptions = require('expect-puppeteer').setDefaultOptions; +// const puppeteer = require('puppeteer'); +// const { defineFeature, loadFeature } = require('jest-cucumber'); +// const setDefaultOptions = require('expect-puppeteer').setDefaultOptions; -const feature = loadFeature('./features/login.feature'); +// const feature = loadFeature('./features/login.feature'); -let page; -let browser; +// let page; +// let browser; -defineFeature(feature, test => { +// defineFeature(feature, test => { - beforeAll(async () => { - browser = await puppeteer.launch({ - headless: "new", - slowMo: 20, - defaultViewport: { width: 1920, height: 1080 }, - args: ['--window-size=1920,1080'] - }); +// beforeAll(async () => { +// browser = await puppeteer.launch({ +// headless: "new", +// slowMo: 20, +// defaultViewport: { width: 1920, height: 1080 }, +// args: ['--window-size=1920,1080'] +// }); - page = await browser.newPage(); - setDefaultOptions({ timeout: 10000 }); -}); +// page = await browser.newPage(); +// setDefaultOptions({ timeout: 10000 }); +// }); -test('Successful login', ({ given, when, then }) => { - given('I am on the login page', async () => { - await page.goto('http://localhost:3000/login'); - await page.waitForSelector('.general'); - }); +// test('Successful login', ({ given, when, then }) => { +// given('I am on the login page', async () => { +// await page.goto('http://localhost:3000/login'); +// await page.waitForSelector('.general'); +// }); - when('I enter valid credentials', async () => { - await page.type('input[type="text"]', 'username'); - await page.type('input[type="password"]', 'password'); - await page.click('button[type="submit"]'); - }); +// when('I enter valid credentials', async () => { +// await page.type('input[type="text"]', 'username'); +// await page.type('input[type="password"]', 'password'); +// await page.click('button[type="submit"]'); +// }); - then('I should be redirected to the menu', async () => { - await page.waitForSelector('.divMenu'); - expect(page.url()).toContain('/menu'); - }); -}, 60000); +// then('I should be redirected to the menu', async () => { +// await page.waitForSelector('.divMenu'); +// expect(page.url()).toContain('/menu'); +// }); +// }, 60000); -test('Failed login', ({ given, when, then }) => { - given('I am on the login page', async () => { - await page.goto('http://localhost:3000/login'); - await page.waitForSelector('.general'); - }); +// test('Failed login', ({ given, when, then }) => { +// given('I am on the login page', async () => { +// await page.goto('http://localhost:3000/login'); +// await page.waitForSelector('.general'); +// }); - when('I enter invalid credentials', async () => { - await page.type('input[type="text"]', 'invalidUsername'); - await page.type('input[type="password"]', 'invalidPassword'); - await page.click('button[type="submit"]'); - }); +// when('I enter invalid credentials', async () => { +// await page.type('input[type="text"]', 'invalidUsername'); +// await page.type('input[type="password"]', 'invalidPassword'); +// await page.click('button[type="submit"]'); +// }); - then('I should NOT be redirected to the menu', async () => { - await page.waitForNavigation({ waitUntil: 'domcontentloaded' }); - expect(page.url()).toContain('/login'); - }); -}, 60000); +// then('I should NOT be redirected to the menu', async () => { +// await page.waitForNavigation({ waitUntil: 'domcontentloaded' }); +// expect(page.url()).toContain('/login'); +// }); +// }, 60000); - afterAll(async () => { - await browser.close(); - }); -}); +// afterAll(async () => { +// await browser.close(); +// }); +// }); From 9b3e824d88ad6d16c41db53bcba4ce511af5c952 Mon Sep 17 00:00:00 2001 From: lauratbg Date: Thu, 25 Apr 2024 14:24:41 +0200 Subject: [PATCH 08/28] Merge and changes --- webapp/e2e/steps/home.steps.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp/e2e/steps/home.steps.js b/webapp/e2e/steps/home.steps.js index eeb89d7e..e901a815 100644 --- a/webapp/e2e/steps/home.steps.js +++ b/webapp/e2e/steps/home.steps.js @@ -64,7 +64,7 @@ defineFeature(feature, test => { }); then('The text container should be visible', async () => { - await expect(page).toMatchElement('.text-container.visible'); + await expect(page).notToMatchElement('.text-container.hidden'); }); }); From 0f7da6bd4b8ec9efce54149af71fceb9bd141be0 Mon Sep 17 00:00:00 2001 From: lauratbg Date: Thu, 25 Apr 2024 14:31:22 +0200 Subject: [PATCH 09/28] Removed a test from home and login feature --- webapp/e2e/features/home.feature | 5 ----- webapp/e2e/features/login.feature | 0 webapp/e2e/steps/home.steps.js | 30 +++++++++++++++--------------- 3 files changed, 15 insertions(+), 20 deletions(-) delete mode 100644 webapp/e2e/features/login.feature diff --git a/webapp/e2e/features/home.feature b/webapp/e2e/features/home.feature index 4bf87421..e8c16b30 100644 --- a/webapp/e2e/features/home.feature +++ b/webapp/e2e/features/home.feature @@ -5,8 +5,3 @@ Feature: Home page functionality When I click on the toggle button to open Then The text container should be hidden - Scenario: Closing the text container - Given I am on the home page - When I click on the toggle button to open and then I click it to close - Then The text container should be visible - diff --git a/webapp/e2e/features/login.feature b/webapp/e2e/features/login.feature deleted file mode 100644 index e69de29b..00000000 diff --git a/webapp/e2e/steps/home.steps.js b/webapp/e2e/steps/home.steps.js index e901a815..da74e799 100644 --- a/webapp/e2e/steps/home.steps.js +++ b/webapp/e2e/steps/home.steps.js @@ -47,26 +47,26 @@ defineFeature(feature, test => { }); }); - test('Closing the text container', ({ given, when, then }) => { - given('I am on the home page', async () => { - await page.goto('http://localhost:3000/home'); - await page.waitForSelector('.general'); - }); + // test('Closing the text container', ({ given, when, then }) => { + // given('I am on the home page', async () => { + // await page.goto('http://localhost:3000/home'); + // await page.waitForSelector('.general'); + // }); - when('I click on the toggle button to open and then I click it to close', async () => { + // when('I click on the toggle button to open and then I click it to close', async () => { - await page.click('label[for="toggleOpen"]'); + // await page.click('label[for="toggleOpen"]'); - // Wait for label to be render, visible : true - await page.waitForSelector(`label[for="toggleClose"]`, {visible: true}); - await page.click('label[for="toggleClose"]'); + // // Wait for label to be render, visible : true + // await page.waitForSelector(`label[for="toggleClose"]`, {visible: true}); + // await page.click('label[for="toggleClose"]'); - }); + // }); - then('The text container should be visible', async () => { - await expect(page).notToMatchElement('.text-container.hidden'); - }); - }); + // then('The text container should be visible', async () => { + // await expect(page).notToMatchElement('.text-container.hidden'); + // }); + // }); afterAll(async () => { await browser.close(); From 56958a1a9365e5b4accacdce5b801b083e62f249 Mon Sep 17 00:00:00 2001 From: lauratbg Date: Thu, 25 Apr 2024 14:37:46 +0200 Subject: [PATCH 10/28] Removed login and updated wait time in competitive test --- webapp/e2e/steps/competitiveGame.steps.js | 2 +- webapp/e2e/steps/login.steps.js | 64 ----------------------- 2 files changed, 1 insertion(+), 65 deletions(-) delete mode 100644 webapp/e2e/steps/login.steps.js diff --git a/webapp/e2e/steps/competitiveGame.steps.js b/webapp/e2e/steps/competitiveGame.steps.js index 95f41dad..bbc509aa 100644 --- a/webapp/e2e/steps/competitiveGame.steps.js +++ b/webapp/e2e/steps/competitiveGame.steps.js @@ -21,7 +21,7 @@ defineFeature(feature, test => { slowMo: 40, defaultViewport: { width: 1920, height: 1080 }, args: ['--window-size=1920,1080'] - }); + }, 60000); page = await browser.newPage(); setDefaultOptions({ timeout: 30000 }); diff --git a/webapp/e2e/steps/login.steps.js b/webapp/e2e/steps/login.steps.js deleted file mode 100644 index 54dc1f6a..00000000 --- a/webapp/e2e/steps/login.steps.js +++ /dev/null @@ -1,64 +0,0 @@ -// const puppeteer = require('puppeteer'); -// const { defineFeature, loadFeature } = require('jest-cucumber'); -// const setDefaultOptions = require('expect-puppeteer').setDefaultOptions; - -// const feature = loadFeature('./features/login.feature'); - -// let page; -// let browser; - -// defineFeature(feature, test => { - -// beforeAll(async () => { -// browser = await puppeteer.launch({ -// headless: "new", -// slowMo: 20, -// defaultViewport: { width: 1920, height: 1080 }, -// args: ['--window-size=1920,1080'] -// }); - -// page = await browser.newPage(); -// setDefaultOptions({ timeout: 10000 }); -// }); - -// test('Successful login', ({ given, when, then }) => { -// given('I am on the login page', async () => { -// await page.goto('http://localhost:3000/login'); -// await page.waitForSelector('.general'); -// }); - -// when('I enter valid credentials', async () => { -// await page.type('input[type="text"]', 'username'); -// await page.type('input[type="password"]', 'password'); -// await page.click('button[type="submit"]'); -// }); - -// then('I should be redirected to the menu', async () => { -// await page.waitForSelector('.divMenu'); -// expect(page.url()).toContain('/menu'); -// }); -// }, 60000); - -// test('Failed login', ({ given, when, then }) => { -// given('I am on the login page', async () => { -// await page.goto('http://localhost:3000/login'); -// await page.waitForSelector('.general'); -// }); - -// when('I enter invalid credentials', async () => { -// await page.type('input[type="text"]', 'invalidUsername'); -// await page.type('input[type="password"]', 'invalidPassword'); -// await page.click('button[type="submit"]'); -// }); - -// then('I should NOT be redirected to the menu', async () => { -// await page.waitForNavigation({ waitUntil: 'domcontentloaded' }); -// expect(page.url()).toContain('/login'); -// }); -// }, 60000); - - -// afterAll(async () => { -// await browser.close(); -// }); -// }); From 4e47c6a6ea71e558b10b627711efd00b65f97075 Mon Sep 17 00:00:00 2001 From: lauratbg Date: Thu, 25 Apr 2024 15:05:15 +0200 Subject: [PATCH 11/28] Copied from master competitive tests --- webapp/e2e/steps/competitiveGame.steps.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webapp/e2e/steps/competitiveGame.steps.js b/webapp/e2e/steps/competitiveGame.steps.js index bbc509aa..0fde989e 100644 --- a/webapp/e2e/steps/competitiveGame.steps.js +++ b/webapp/e2e/steps/competitiveGame.steps.js @@ -21,7 +21,7 @@ defineFeature(feature, test => { slowMo: 40, defaultViewport: { width: 1920, height: 1080 }, args: ['--window-size=1920,1080'] - }, 60000); + }); page = await browser.newPage(); setDefaultOptions({ timeout: 30000 }); @@ -47,4 +47,4 @@ defineFeature(feature, test => { }); }); -}); +}); \ No newline at end of file From 65d7bc37c4915e2c1b5ad8a675e1b6648718b477 Mon Sep 17 00:00:00 2001 From: lauratbg Date: Fri, 26 Apr 2024 15:55:34 +0200 Subject: [PATCH 12/28] First try of login test --- webapp/e2e/features/login.feature | 6 ++++ webapp/e2e/steps/login.steps.js | 52 +++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 webapp/e2e/features/login.feature create mode 100644 webapp/e2e/steps/login.steps.js diff --git a/webapp/e2e/features/login.feature b/webapp/e2e/features/login.feature new file mode 100644 index 00000000..c81a54df --- /dev/null +++ b/webapp/e2e/features/login.feature @@ -0,0 +1,6 @@ +Feature: Login page functionality + + Scenario: Login + Given I am on the login page + I login as user + I am in /menu diff --git a/webapp/e2e/steps/login.steps.js b/webapp/e2e/steps/login.steps.js new file mode 100644 index 00000000..3b2b0369 --- /dev/null +++ b/webapp/e2e/steps/login.steps.js @@ -0,0 +1,52 @@ +const puppeteer = require('puppeteer'); +const { defineFeature, loadFeature } = require('jest-cucumber'); +const setDefaultOptions = require('expect-puppeteer').setDefaultOptions; + +const feature = loadFeature('./features/login.feature'); + +const { register, login, logout } = require("../utils"); + +let page; +let browser; + +const email = "testUser1@example.com"; +const username = "testUser1" +const password = "testUserPassword" + +defineFeature(feature, test => { + + beforeAll(async () => { + browser = await puppeteer.launch({ + headless: "new", + slowMo: 40, + defaultViewport: { width: 1920, height: 1080 }, + args: ['--window-size=1920,1080'] + }); + + page = await browser.newPage(); + setDefaultOptions({ timeout: 30000 }); + + await register(page, email, username, password); + }); + + beforeEach(async () => { + await logout(page); + await login(page, username, password); + }) + + test('Login', ({ given,when, then }) => { + given('I am on the login page', async () => { + await page.goto('http://localhost:3000/login'); + await page.waitForSelector('.general'); + }); + when('I login as user', async () => { + await login(page, email, username, password); + }); + then('I am in /menu', async () => { + await expect(page).toMatchElement('.divMenu'); + }); + }); + + + +}); \ No newline at end of file From 7b7d3fd5d30c7fb2a749757513b3468d2b8c8415 Mon Sep 17 00:00:00 2001 From: lauratbg Date: Fri, 26 Apr 2024 16:01:20 +0200 Subject: [PATCH 13/28] AddUser added --- webapp/e2e/features/addUser.feature | 7 ++++ webapp/e2e/features/login.feature | 8 +++-- webapp/e2e/steps/addUser.steps.js | 51 +++++++++++++++++++++++++++++ webapp/e2e/steps/login.steps.js | 13 ++++++++ 4 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 webapp/e2e/features/addUser.feature create mode 100644 webapp/e2e/steps/addUser.steps.js diff --git a/webapp/e2e/features/addUser.feature b/webapp/e2e/features/addUser.feature new file mode 100644 index 00000000..9c6d6e89 --- /dev/null +++ b/webapp/e2e/features/addUser.feature @@ -0,0 +1,7 @@ +Feature: Login page functionality + + Scenario: Register + Given I am on the add user page + When I register a user + Then I am in /menu + diff --git a/webapp/e2e/features/login.feature b/webapp/e2e/features/login.feature index c81a54df..8194d17d 100644 --- a/webapp/e2e/features/login.feature +++ b/webapp/e2e/features/login.feature @@ -2,5 +2,9 @@ Feature: Login page functionality Scenario: Login Given I am on the login page - I login as user - I am in /menu + When I login as user + Then I am in /menu +Scenario: Failed login + Given I am on the login page + When I try to login + Then I am in /login diff --git a/webapp/e2e/steps/addUser.steps.js b/webapp/e2e/steps/addUser.steps.js new file mode 100644 index 00000000..1df161f9 --- /dev/null +++ b/webapp/e2e/steps/addUser.steps.js @@ -0,0 +1,51 @@ +const puppeteer = require('puppeteer'); +const { defineFeature, loadFeature } = require('jest-cucumber'); +const setDefaultOptions = require('expect-puppeteer').setDefaultOptions; + +const feature = loadFeature('./features/addUser.feature'); + +const { register, login, logout } = require("../utils"); + +let page; +let browser; + +const email = "testUser1@example.com"; +const username = "testUser1" +const password = "testUserPassword" + +defineFeature(feature, test => { + + beforeAll(async () => { + browser = await puppeteer.launch({ + headless: "new", + slowMo: 40, + defaultViewport: { width: 1920, height: 1080 }, + args: ['--window-size=1920,1080'] + }); + + page = await browser.newPage(); + setDefaultOptions({ timeout: 30000 }); + + }); + + beforeEach(async () => { + await logout(page); + await login(page, username, password); + }) + + test('Register', ({ given,when, then }) => { + given('I am on the add user page', async () => { + await page.goto('http://localhost:3000/addUser'); + await page.waitForSelector('.general'); + }); + when('I register a user', async () => { + await register(page, email, username, password); + }); + then('I am in /menu', async () => { + await expect(page).toMatchElement('.divMenu'); + }); + }); + + + +}); \ No newline at end of file diff --git a/webapp/e2e/steps/login.steps.js b/webapp/e2e/steps/login.steps.js index 3b2b0369..9e3b4da5 100644 --- a/webapp/e2e/steps/login.steps.js +++ b/webapp/e2e/steps/login.steps.js @@ -46,6 +46,19 @@ defineFeature(feature, test => { await expect(page).toMatchElement('.divMenu'); }); }); + + test('Failed login', ({ given,when, then }) => { + given('I am on the login page', async () => { + await page.goto('http://localhost:3000/login'); + await page.waitForSelector('.general'); + }); + when('I try to login', async () => { + await login(page, email, "lau", "123"); + }); + then('I am in /login', async () => { + await expect(page).toMatchElement('.general'); + }); + }); From 6b9bd363f24c27257461aadd38229ba60a654496 Mon Sep 17 00:00:00 2001 From: lauratbg Date: Fri, 26 Apr 2024 16:09:50 +0200 Subject: [PATCH 14/28] Changed things --- webapp/e2e/steps/addUser.steps.js | 11 +++++----- webapp/e2e/steps/login.steps.js | 35 ++++++++++++++++--------------- 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/webapp/e2e/steps/addUser.steps.js b/webapp/e2e/steps/addUser.steps.js index 1df161f9..91cdd581 100644 --- a/webapp/e2e/steps/addUser.steps.js +++ b/webapp/e2e/steps/addUser.steps.js @@ -26,12 +26,13 @@ defineFeature(feature, test => { page = await browser.newPage(); setDefaultOptions({ timeout: 30000 }); + await register(page, email, username, password); }); - - beforeEach(async () => { - await logout(page); - await login(page, username, password); - }) + + beforeEach(async () => { + await logout(page); + await login(page, username, password); + }) test('Register', ({ given,when, then }) => { given('I am on the add user page', async () => { diff --git a/webapp/e2e/steps/login.steps.js b/webapp/e2e/steps/login.steps.js index 9e3b4da5..009019ae 100644 --- a/webapp/e2e/steps/login.steps.js +++ b/webapp/e2e/steps/login.steps.js @@ -15,24 +15,25 @@ const password = "testUserPassword" defineFeature(feature, test => { - beforeAll(async () => { - browser = await puppeteer.launch({ - headless: "new", - slowMo: 40, - defaultViewport: { width: 1920, height: 1080 }, - args: ['--window-size=1920,1080'] - }); - - page = await browser.newPage(); - setDefaultOptions({ timeout: 30000 }); - - await register(page, email, username, password); - }); + beforeAll(async () => { + browser = await puppeteer.launch({ + headless: "new", + slowMo: 40, + defaultViewport: { width: 1920, height: 1080 }, + args: ['--window-size=1920,1080'] + }); + + page = await browser.newPage(); + setDefaultOptions({ timeout: 30000 }); + + await register(page, email, username, password); +}); + +beforeEach(async () => { + await logout(page); + await login(page, username, password); +}) - beforeEach(async () => { - await logout(page); - await login(page, username, password); - }) test('Login', ({ given,when, then }) => { given('I am on the login page', async () => { From ca4ff413a3a90fa873dd0e55d499472f400a1f02 Mon Sep 17 00:00:00 2001 From: lauratbg Date: Fri, 26 Apr 2024 16:17:38 +0200 Subject: [PATCH 15/28] Changing the before all of login --- webapp/e2e/steps/login.steps.js | 24 +++++++------- webapp/webapp/package-lock.json | 56 +++++++++++++++++++++++++++++++++ webapp/webapp/package.json | 5 +++ 3 files changed, 73 insertions(+), 12 deletions(-) create mode 100644 webapp/webapp/package-lock.json create mode 100644 webapp/webapp/package.json diff --git a/webapp/e2e/steps/login.steps.js b/webapp/e2e/steps/login.steps.js index 009019ae..bb1dc340 100644 --- a/webapp/e2e/steps/login.steps.js +++ b/webapp/e2e/steps/login.steps.js @@ -15,19 +15,19 @@ const password = "testUserPassword" defineFeature(feature, test => { - beforeAll(async () => { - browser = await puppeteer.launch({ - headless: "new", - slowMo: 40, - defaultViewport: { width: 1920, height: 1080 }, - args: ['--window-size=1920,1080'] - }); - - page = await browser.newPage(); - setDefaultOptions({ timeout: 30000 }); - - await register(page, email, username, password); +beforeAll(async () => { + browser = await puppeteer.launch({ + headless: "new", + slowMo: 20, + defaultViewport: { width: 1920, height: 1080 }, + args: ['--window-size=1920,1080'] }); + +page = await browser.newPage(); +setDefaultOptions({ timeout: 10000 }); +await register(page, email, username, password); + +},60000); beforeEach(async () => { await logout(page); diff --git a/webapp/webapp/package-lock.json b/webapp/webapp/package-lock.json new file mode 100644 index 00000000..b73ba1cc --- /dev/null +++ b/webapp/webapp/package-lock.json @@ -0,0 +1,56 @@ +{ + "name": "webapp", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "webapp": "file:.." + } + }, + "..": { + "version": "0.1.0", + "dependencies": { + "@emotion/react": "^11.11.3", + "@emotion/styled": "^11.11.0", + "@mui/material": "^5.15.3", + "@testing-library/jest-dom": "^5.17.0", + "@testing-library/react": "^14.1.2", + "@testing-library/user-event": "^14.5.2", + "axios": "^1.6.5", + "bcrypt": "^5.1.1", + "express": "^4.19.2", + "i18n": "^0.15.1", + "jquery": "^3.7.1", + "js-cookie": "^3.0.5", + "jsonwebtoken": "^9.0.2", + "mongoose": "^8.3.0", + "react": "^18.2.0", + "react-countdown": "^2.3.5", + "react-dom": "^18.2.0", + "react-i18next": "^14.0.5", + "react-icons": "^5.0.1", + "react-router-dom": "^6.22.3", + "react-scripts": "^5.0.1", + "web-vitals": "^3.5.1", + "zxcvbn": "^4.4.2" + }, + "devDependencies": { + "@babel/plugin-proposal-private-property-in-object": "^7.21.11", + "axios-mock-adapter": "^1.22.0", + "expect-puppeteer": "^9.0.2", + "jest": "^29.3.1", + "jest-cucumber": "^3.0.1", + "jest-environment-node": "^29.7.0", + "mongodb-memory-server": "^9.1.4", + "puppeteer": "^21.7.0", + "serve": "^14.2.1", + "start-server-and-test": "^2.0.3" + } + }, + "node_modules/webapp": { + "resolved": "..", + "link": true + } + } +} diff --git a/webapp/webapp/package.json b/webapp/webapp/package.json new file mode 100644 index 00000000..96fd912b --- /dev/null +++ b/webapp/webapp/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "webapp": "file:.." + } +} From c082cfc5b147d83c1626da419df9bec75fd37277 Mon Sep 17 00:00:00 2001 From: lauratbg Date: Fri, 26 Apr 2024 16:25:16 +0200 Subject: [PATCH 16/28] Increased times --- webapp/e2e/features/addUser.feature | 2 +- webapp/e2e/steps/addUser.steps.js | 4 ++-- webapp/e2e/steps/login.steps.js | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/webapp/e2e/features/addUser.feature b/webapp/e2e/features/addUser.feature index 9c6d6e89..5ecd17c6 100644 --- a/webapp/e2e/features/addUser.feature +++ b/webapp/e2e/features/addUser.feature @@ -1,4 +1,4 @@ -Feature: Login page functionality +Feature: Register page functionality Scenario: Register Given I am on the add user page diff --git a/webapp/e2e/steps/addUser.steps.js b/webapp/e2e/steps/addUser.steps.js index 91cdd581..02811ced 100644 --- a/webapp/e2e/steps/addUser.steps.js +++ b/webapp/e2e/steps/addUser.steps.js @@ -27,7 +27,7 @@ defineFeature(feature, test => { setDefaultOptions({ timeout: 30000 }); await register(page, email, username, password); - }); + }, 60000); beforeEach(async () => { await logout(page); @@ -45,7 +45,7 @@ defineFeature(feature, test => { then('I am in /menu', async () => { await expect(page).toMatchElement('.divMenu'); }); - }); + }, 60000); diff --git a/webapp/e2e/steps/login.steps.js b/webapp/e2e/steps/login.steps.js index bb1dc340..83fb082f 100644 --- a/webapp/e2e/steps/login.steps.js +++ b/webapp/e2e/steps/login.steps.js @@ -46,7 +46,7 @@ beforeEach(async () => { then('I am in /menu', async () => { await expect(page).toMatchElement('.divMenu'); }); - }); + }, 60000); test('Failed login', ({ given,when, then }) => { given('I am on the login page', async () => { @@ -58,7 +58,7 @@ beforeEach(async () => { }); then('I am in /login', async () => { await expect(page).toMatchElement('.general'); - }); + }, 60000); }); From ef8b7844b54eea7b7181a170e0cf9d24bcdb0659 Mon Sep 17 00:00:00 2001 From: lauratbg Date: Fri, 26 Apr 2024 16:33:47 +0200 Subject: [PATCH 17/28] Improving things --- webapp/e2e/features/login.feature | 5 +---- webapp/e2e/steps/addUser.steps.js | 1 - webapp/e2e/steps/login.steps.js | 23 +++++++++++------------ 3 files changed, 12 insertions(+), 17 deletions(-) diff --git a/webapp/e2e/features/login.feature b/webapp/e2e/features/login.feature index 8194d17d..54f25976 100644 --- a/webapp/e2e/features/login.feature +++ b/webapp/e2e/features/login.feature @@ -4,7 +4,4 @@ Feature: Login page functionality Given I am on the login page When I login as user Then I am in /menu -Scenario: Failed login - Given I am on the login page - When I try to login - Then I am in /login + diff --git a/webapp/e2e/steps/addUser.steps.js b/webapp/e2e/steps/addUser.steps.js index 02811ced..26b84d81 100644 --- a/webapp/e2e/steps/addUser.steps.js +++ b/webapp/e2e/steps/addUser.steps.js @@ -26,7 +26,6 @@ defineFeature(feature, test => { page = await browser.newPage(); setDefaultOptions({ timeout: 30000 }); - await register(page, email, username, password); }, 60000); beforeEach(async () => { diff --git a/webapp/e2e/steps/login.steps.js b/webapp/e2e/steps/login.steps.js index 83fb082f..fe394e01 100644 --- a/webapp/e2e/steps/login.steps.js +++ b/webapp/e2e/steps/login.steps.js @@ -48,18 +48,17 @@ beforeEach(async () => { }); }, 60000); - test('Failed login', ({ given,when, then }) => { - given('I am on the login page', async () => { - await page.goto('http://localhost:3000/login'); - await page.waitForSelector('.general'); - }); - when('I try to login', async () => { - await login(page, email, "lau", "123"); - }); - then('I am in /login', async () => { - await expect(page).toMatchElement('.general'); - }, 60000); - }); + // test('Failed login', ({ given,when, then }) => { + // given('I am on the login page', async () => { + // await page.goto('http://localhost:3000/login'); + // }); + // when('I try to login', async () => { + // await login(page, email, "lau", "123"); + // }); + // then('I am in /login', async () => { + // await expect(page).toMatchElement('.general'); + // }, 60000); + // }); From 4c5dca51a37585c6f6f4b3a4d17c8afc90042e04 Mon Sep 17 00:00:00 2001 From: lauratbg Date: Fri, 26 Apr 2024 16:40:26 +0200 Subject: [PATCH 18/28] More --- webapp/e2e/steps/addUser.steps.js | 6 +----- webapp/e2e/steps/login.steps.js | 1 - 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/webapp/e2e/steps/addUser.steps.js b/webapp/e2e/steps/addUser.steps.js index 26b84d81..b9a08bcd 100644 --- a/webapp/e2e/steps/addUser.steps.js +++ b/webapp/e2e/steps/addUser.steps.js @@ -28,11 +28,7 @@ defineFeature(feature, test => { }, 60000); - beforeEach(async () => { - await logout(page); - await login(page, username, password); - }) - + test('Register', ({ given,when, then }) => { given('I am on the add user page', async () => { await page.goto('http://localhost:3000/addUser'); diff --git a/webapp/e2e/steps/login.steps.js b/webapp/e2e/steps/login.steps.js index fe394e01..777ac020 100644 --- a/webapp/e2e/steps/login.steps.js +++ b/webapp/e2e/steps/login.steps.js @@ -38,7 +38,6 @@ beforeEach(async () => { test('Login', ({ given,when, then }) => { given('I am on the login page', async () => { await page.goto('http://localhost:3000/login'); - await page.waitForSelector('.general'); }); when('I login as user', async () => { await login(page, email, username, password); From fce7bef0a15385da25453085f19e6062e24aab19 Mon Sep 17 00:00:00 2001 From: lauratbg Date: Fri, 26 Apr 2024 16:50:19 +0200 Subject: [PATCH 19/28] Doing it without using utils --- webapp/e2e/steps/addUser.steps.js | 7 ++++++- webapp/e2e/steps/login.steps.js | 12 ++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/webapp/e2e/steps/addUser.steps.js b/webapp/e2e/steps/addUser.steps.js index b9a08bcd..e1d752fe 100644 --- a/webapp/e2e/steps/addUser.steps.js +++ b/webapp/e2e/steps/addUser.steps.js @@ -35,9 +35,14 @@ defineFeature(feature, test => { await page.waitForSelector('.general'); }); when('I register a user', async () => { - await register(page, email, username, password); + await page.type('input[name="email"]', email); + await page.type('input[name="username"]', username); + await page.type('input[name="password"]', password); + await page.type('input[name="repeat_password"]', password); + await page.click('button[type="submit"]'); }); then('I am in /menu', async () => { + await page.waitForSelector('.divMenu'); await expect(page).toMatchElement('.divMenu'); }); }, 60000); diff --git a/webapp/e2e/steps/login.steps.js b/webapp/e2e/steps/login.steps.js index 777ac020..1e05f03e 100644 --- a/webapp/e2e/steps/login.steps.js +++ b/webapp/e2e/steps/login.steps.js @@ -29,20 +29,20 @@ await register(page, email, username, password); },60000); -beforeEach(async () => { - await logout(page); - await login(page, username, password); -}) - test('Login', ({ given,when, then }) => { given('I am on the login page', async () => { await page.goto('http://localhost:3000/login'); }); when('I login as user', async () => { - await login(page, email, username, password); + + await page.type('input[type="text"]', username); + await page.type('input[type="password"]', password); + await page.click('button[type="submit"]'); + await page.waitForSelector('.general'); }); then('I am in /menu', async () => { + await page.waitForSelector('.general'); await expect(page).toMatchElement('.divMenu'); }); }, 60000); From 744bd160bf1eba3e941a1b1f243934c51b1db671 Mon Sep 17 00:00:00 2001 From: lauratbg Date: Fri, 26 Apr 2024 17:00:14 +0200 Subject: [PATCH 20/28] Continue trying things --- webapp/e2e/steps/addUser.steps.js | 1 - webapp/e2e/steps/login.steps.js | 4 +++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/webapp/e2e/steps/addUser.steps.js b/webapp/e2e/steps/addUser.steps.js index e1d752fe..a0ac3715 100644 --- a/webapp/e2e/steps/addUser.steps.js +++ b/webapp/e2e/steps/addUser.steps.js @@ -42,7 +42,6 @@ defineFeature(feature, test => { await page.click('button[type="submit"]'); }); then('I am in /menu', async () => { - await page.waitForSelector('.divMenu'); await expect(page).toMatchElement('.divMenu'); }); }, 60000); diff --git a/webapp/e2e/steps/login.steps.js b/webapp/e2e/steps/login.steps.js index 1e05f03e..ecaa3d24 100644 --- a/webapp/e2e/steps/login.steps.js +++ b/webapp/e2e/steps/login.steps.js @@ -30,9 +30,11 @@ await register(page, email, username, password); },60000); - test('Login', ({ given,when, then }) => { + test('Login', ({ given,when, then }) => { given('I am on the login page', async () => { await page.goto('http://localhost:3000/login'); + await page.waitForSelector('.general'); + }); when('I login as user', async () => { From 7dec29380a50dc7535c09cb0c7b60a45acb1eb07 Mon Sep 17 00:00:00 2001 From: lauratbg Date: Fri, 26 Apr 2024 17:12:29 +0200 Subject: [PATCH 21/28] Last try --- webapp/e2e/features/addUser.feature | 3 +-- webapp/e2e/features/login.feature | 3 +-- webapp/e2e/steps/addUser.steps.js | 13 +++---------- webapp/e2e/steps/login.steps.js | 13 ++----------- 4 files changed, 7 insertions(+), 25 deletions(-) diff --git a/webapp/e2e/features/addUser.feature b/webapp/e2e/features/addUser.feature index 5ecd17c6..df43f29c 100644 --- a/webapp/e2e/features/addUser.feature +++ b/webapp/e2e/features/addUser.feature @@ -1,7 +1,6 @@ Feature: Register page functionality Scenario: Register - Given I am on the add user page - When I register a user + Given I register a user Then I am in /menu diff --git a/webapp/e2e/features/login.feature b/webapp/e2e/features/login.feature index 54f25976..3d37ffd5 100644 --- a/webapp/e2e/features/login.feature +++ b/webapp/e2e/features/login.feature @@ -1,7 +1,6 @@ Feature: Login page functionality Scenario: Login - Given I am on the login page - When I login as user + Given I login as user Then I am in /menu diff --git a/webapp/e2e/steps/addUser.steps.js b/webapp/e2e/steps/addUser.steps.js index a0ac3715..23f5f0ea 100644 --- a/webapp/e2e/steps/addUser.steps.js +++ b/webapp/e2e/steps/addUser.steps.js @@ -30,17 +30,10 @@ defineFeature(feature, test => { test('Register', ({ given,when, then }) => { - given('I am on the add user page', async () => { - await page.goto('http://localhost:3000/addUser'); - await page.waitForSelector('.general'); - }); - when('I register a user', async () => { - await page.type('input[name="email"]', email); - await page.type('input[name="username"]', username); - await page.type('input[name="password"]', password); - await page.type('input[name="repeat_password"]', password); - await page.click('button[type="submit"]'); + given('I register a user', async () => { + await register(page, email, username, password); }); + then('I am in /menu', async () => { await expect(page).toMatchElement('.divMenu'); }); diff --git a/webapp/e2e/steps/login.steps.js b/webapp/e2e/steps/login.steps.js index ecaa3d24..4f87a483 100644 --- a/webapp/e2e/steps/login.steps.js +++ b/webapp/e2e/steps/login.steps.js @@ -31,20 +31,11 @@ await register(page, email, username, password); test('Login', ({ given,when, then }) => { - given('I am on the login page', async () => { - await page.goto('http://localhost:3000/login'); - await page.waitForSelector('.general'); + given('I login a user', async () => { + await login(page, username, password); }); - when('I login as user', async () => { - - await page.type('input[type="text"]', username); - await page.type('input[type="password"]', password); - await page.click('button[type="submit"]'); - await page.waitForSelector('.general'); - }); then('I am in /menu', async () => { - await page.waitForSelector('.general'); await expect(page).toMatchElement('.divMenu'); }); }, 60000); From a6f0e805fee186edb548ce31bc52d8ff95a7812e Mon Sep 17 00:00:00 2001 From: lauratbg Date: Fri, 26 Apr 2024 17:24:18 +0200 Subject: [PATCH 22/28] little fix --- webapp/e2e/features/login.feature | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp/e2e/features/login.feature b/webapp/e2e/features/login.feature index 3d37ffd5..49ad09c7 100644 --- a/webapp/e2e/features/login.feature +++ b/webapp/e2e/features/login.feature @@ -1,6 +1,6 @@ Feature: Login page functionality Scenario: Login - Given I login as user + Given I login a user Then I am in /menu From a78516da21b52450e639f0bca87494840f44a5e7 Mon Sep 17 00:00:00 2001 From: Mister-Mario Date: Sat, 27 Apr 2024 12:39:59 +0200 Subject: [PATCH 23/28] Fixed tests --- webapp/e2e/steps/addUser.steps.js | 4 ++-- webapp/e2e/steps/competitiveGame.steps.js | 6 ++--- webapp/e2e/steps/login.steps.js | 28 +++++++++++------------ 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/webapp/e2e/steps/addUser.steps.js b/webapp/e2e/steps/addUser.steps.js index 23f5f0ea..2fbb720e 100644 --- a/webapp/e2e/steps/addUser.steps.js +++ b/webapp/e2e/steps/addUser.steps.js @@ -9,8 +9,8 @@ const { register, login, logout } = require("../utils"); let page; let browser; -const email = "testUser1@example.com"; -const username = "testUser1" +const email = "testUserAddUser@example.com"; +const username = "testUserAddUser" const password = "testUserPassword" defineFeature(feature, test => { diff --git a/webapp/e2e/steps/competitiveGame.steps.js b/webapp/e2e/steps/competitiveGame.steps.js index a400be6a..6e65e983 100644 --- a/webapp/e2e/steps/competitiveGame.steps.js +++ b/webapp/e2e/steps/competitiveGame.steps.js @@ -9,15 +9,15 @@ const { register, login, logout } = require("../utils"); let page; let browser; -const email = "testUser1@example.com"; -const username = "testUser1" +const email = "testUserCompetitiveGame@example.com"; +const username = "testUserCompetitiveGame" const password = "testUserPassword" defineFeature(feature, test => { beforeAll(async () => { browser = await puppeteer.launch({ - headless: "new", + headless: false, slowMo: 40, defaultViewport: { width: 1920, height: 1080 }, args: ['--window-size=1920,1080'] diff --git a/webapp/e2e/steps/login.steps.js b/webapp/e2e/steps/login.steps.js index 4f87a483..aedc6def 100644 --- a/webapp/e2e/steps/login.steps.js +++ b/webapp/e2e/steps/login.steps.js @@ -9,8 +9,8 @@ const { register, login, logout } = require("../utils"); let page; let browser; -const email = "testUser1@example.com"; -const username = "testUser1" +const email = "testUserLogin@example.com"; +const username = "testUserLogin" const password = "testUserPassword" defineFeature(feature, test => { @@ -26,7 +26,7 @@ beforeAll(async () => { page = await browser.newPage(); setDefaultOptions({ timeout: 10000 }); await register(page, email, username, password); - +await logout(page); },60000); @@ -40,17 +40,17 @@ await register(page, email, username, password); }); }, 60000); - // test('Failed login', ({ given,when, then }) => { - // given('I am on the login page', async () => { - // await page.goto('http://localhost:3000/login'); - // }); - // when('I try to login', async () => { - // await login(page, email, "lau", "123"); - // }); - // then('I am in /login', async () => { - // await expect(page).toMatchElement('.general'); - // }, 60000); - // }); + test('Failed login', ({ given,when, then }) => { + given('I am on the login page', async () => { + await page.goto('http://localhost:3000/login'); + }); + when('I try to login', async () => { + await login(page, email, "lau", "123"); + }); + then('I am in /login', async () => { + await expect(page).toMatchElement('.general'); + }, 60000); + }); From 8f1509385c113083f56040f096224e7c3b40e5f2 Mon Sep 17 00:00:00 2001 From: Mister-Mario Date: Sat, 27 Apr 2024 12:41:27 +0200 Subject: [PATCH 24/28] Added test feature --- webapp/e2e/features/login.feature | 4 ++ webapp/e2e/steps/register-form.steps.txt | 55 ------------------------ 2 files changed, 4 insertions(+), 55 deletions(-) delete mode 100644 webapp/e2e/steps/register-form.steps.txt diff --git a/webapp/e2e/features/login.feature b/webapp/e2e/features/login.feature index 49ad09c7..77a23db2 100644 --- a/webapp/e2e/features/login.feature +++ b/webapp/e2e/features/login.feature @@ -3,4 +3,8 @@ Feature: Login page functionality Scenario: Login Given I login a user Then I am in /menu + Scenario: Failed login + Given I am on the login page + When I try to login + Then I am in /login diff --git a/webapp/e2e/steps/register-form.steps.txt b/webapp/e2e/steps/register-form.steps.txt deleted file mode 100644 index 0c329391..00000000 --- a/webapp/e2e/steps/register-form.steps.txt +++ /dev/null @@ -1,55 +0,0 @@ -WAIT UNTIL REGISTER IS FINALIZED (Add email) - -const puppeteer = require('puppeteer'); -const { defineFeature, loadFeature }=require('jest-cucumber'); -const setDefaultOptions = require('expect-puppeteer').setDefaultOptions -const feature = loadFeature('./features/register-form.feature'); - -let page; -let browser; - -defineFeature(feature, test => { - - beforeAll(async () => { - browser = process.env.GITHUB_ACTIONS - ? await puppeteer.launch() - : await puppeteer.launch({ headless: false, slowMo: 100 }); - page = await browser.newPage(); - //Way of setting up the timeout - setDefaultOptions({ timeout: 10000 }) - - await page - .goto("http://localhost:3000/login", { - waitUntil: "networkidle0", - }) - .catch(() => {}); - }); - - test('The user is not registered in the site', ({given,when,then}) => { - - let username; - let password; - - given('An unregistered user', async () => { - username = "pablo" - password = "pabloasw" - await expect(page).toClick("a", { text: "Don't have an account? Register here." }); - }); - - when('I fill the data in the form and press submit', async () => { - await expect(page).toFill('input[name="username"]', username); - await expect(page).toFill('input[name="password"]', password); - await expect(page).toFill('input[name="repeat_password"]', password); - await expect(page).toClick('button', { text: 'Add User' }) - }); - - then('A confirmation message should be shown in the screen', async () => { - await expect(page).toMatchElement("div", { text: "User added successfully" }); - }); - }) - - afterAll(async ()=>{ - browser.close() - }) - -}); \ No newline at end of file From 86551f5be4c66e8a8946ca2a22668a30d5c94ebf Mon Sep 17 00:00:00 2001 From: Mister-Mario Date: Sat, 27 Apr 2024 13:04:17 +0200 Subject: [PATCH 25/28] Added headless mode --- webapp/e2e/steps/competitiveGame.steps.js | 2 +- webapp/e2e/steps/login.steps.js | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/webapp/e2e/steps/competitiveGame.steps.js b/webapp/e2e/steps/competitiveGame.steps.js index 6e65e983..ab5ad9e2 100644 --- a/webapp/e2e/steps/competitiveGame.steps.js +++ b/webapp/e2e/steps/competitiveGame.steps.js @@ -17,7 +17,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = await puppeteer.launch({ - headless: false, + headless: "new", slowMo: 40, defaultViewport: { width: 1920, height: 1080 }, args: ['--window-size=1920,1080'] diff --git a/webapp/e2e/steps/login.steps.js b/webapp/e2e/steps/login.steps.js index aedc6def..0a0f07a0 100644 --- a/webapp/e2e/steps/login.steps.js +++ b/webapp/e2e/steps/login.steps.js @@ -30,13 +30,14 @@ await logout(page); },60000); - test('Login', ({ given,when, then }) => { + test('Login', ({ given, then }) => { given('I login a user', async () => { await login(page, username, password); }); then('I am in /menu', async () => { await expect(page).toMatchElement('.divMenu'); + await logout(page); }); }, 60000); @@ -45,10 +46,15 @@ await logout(page); await page.goto('http://localhost:3000/login'); }); when('I try to login', async () => { - await login(page, email, "lau", "123"); + await page.goto('http://localhost:3000/login'); + await page.waitForSelector('.general'); + + await page.type('input[type="text"]', 'lau'); + await page.type('input[type="password"]', '123'); + await page.click('button[type="submit"]'); }); then('I am in /login', async () => { - await expect(page).toMatchElement('.general'); + await expect(page).toMatchElement('.title-login'); }, 60000); }); From 95e7a171cee87cb86356f38bc02826d897ed1e50 Mon Sep 17 00:00:00 2001 From: Mister-Mario Date: Sat, 27 Apr 2024 13:16:02 +0200 Subject: [PATCH 26/28] Added commented scenarios for home --- webapp/e2e/features/home.feature | 8 +++++ webapp/e2e/steps/home.steps.js | 51 ++++++++++++++++---------------- 2 files changed, 33 insertions(+), 26 deletions(-) diff --git a/webapp/e2e/features/home.feature b/webapp/e2e/features/home.feature index e8c16b30..660bcb41 100644 --- a/webapp/e2e/features/home.feature +++ b/webapp/e2e/features/home.feature @@ -1,7 +1,15 @@ Feature: Home page functionality + Scenario: The text container is initially visible + Given I am on the home page + Then The text container should be visible + Scenario: Opening the text container Given I am on the home page When I click on the toggle button to open Then The text container should be hidden + Scenario: Closing the text container + Given I am on the home page + When I click on the toggle button to open and then I click it to close + Then The text container should be visible \ No newline at end of file diff --git a/webapp/e2e/steps/home.steps.js b/webapp/e2e/steps/home.steps.js index da74e799..28cb0d41 100644 --- a/webapp/e2e/steps/home.steps.js +++ b/webapp/e2e/steps/home.steps.js @@ -11,7 +11,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = await puppeteer.launch({ - headless: "new", + headless: false, slowMo: 20, defaultViewport: { width: 1920, height: 1080 }, args: ['--window-size=1920,1080'] @@ -21,16 +21,16 @@ defineFeature(feature, test => { setDefaultOptions({ timeout: 10000 }); }); - // test('The text container is initially visible', ({ given, then }) => { - // given('I am on the home page', async () => { - // await page.goto('http://localhost:3000/home'); - // await page.waitForSelector('.general'); - // }); + test('The text container is initially visible', ({ given, then }) => { + given('I am on the home page', async () => { + await page.goto('http://localhost:3000/home'); + await page.waitForSelector('.general'); + }); - // then('The text container should be visible', async () => { - // await expect(page).toMatchElement('.text-container.visible'); - // }); - // }); + then('The text container should be visible', async () => { + await expect(page).toMatchElement('.text-container.visible'); + }); + }); test('Opening the text container', ({ given, when, then }) => { given('I am on the home page', async () => { @@ -47,26 +47,25 @@ defineFeature(feature, test => { }); }); - // test('Closing the text container', ({ given, when, then }) => { - // given('I am on the home page', async () => { - // await page.goto('http://localhost:3000/home'); - // await page.waitForSelector('.general'); - // }); + test('Closing the text container', ({ given, when, then }) => { + given('I am on the home page', async () => { + await page.goto('http://localhost:3000/home'); + await page.waitForSelector('.general'); + }); + when('I click on the toggle button to open and then I click it to close', async () => { - // when('I click on the toggle button to open and then I click it to close', async () => { + await page.click('label[for="toggleOpen"]'); - // await page.click('label[for="toggleOpen"]'); + // Wait for label to be render, visible : true + await page.waitForSelector(`label[for="toggleClose"]`, {visible: true}); + await page.click('label[for="toggleClose"]'); - // // Wait for label to be render, visible : true - // await page.waitForSelector(`label[for="toggleClose"]`, {visible: true}); - // await page.click('label[for="toggleClose"]'); + }); - // }); - - // then('The text container should be visible', async () => { - // await expect(page).notToMatchElement('.text-container.hidden'); - // }); - // }); + then('The text container should be visible', async () => { + await expect(page).toMatchElement('.text-container.visible'); + }); + }); afterAll(async () => { await browser.close(); From 4fecee7bdbfca4298fce7196743cd0e094d82fa8 Mon Sep 17 00:00:00 2001 From: Mister-Mario Date: Sat, 27 Apr 2024 13:21:40 +0200 Subject: [PATCH 27/28] Added headless --- webapp/e2e/steps/home.steps.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp/e2e/steps/home.steps.js b/webapp/e2e/steps/home.steps.js index 28cb0d41..a0f5b484 100644 --- a/webapp/e2e/steps/home.steps.js +++ b/webapp/e2e/steps/home.steps.js @@ -11,7 +11,7 @@ defineFeature(feature, test => { beforeAll(async () => { browser = await puppeteer.launch({ - headless: false, + headless: "new", slowMo: 20, defaultViewport: { width: 1920, height: 1080 }, args: ['--window-size=1920,1080'] From a65664ba4c667c4fe9130685ce29bc7efbe23136 Mon Sep 17 00:00:00 2001 From: Mister-Mario Date: Sat, 27 Apr 2024 17:20:15 +0200 Subject: [PATCH 28/28] Tests pass on local --- webapp/e2e/features/competitiveGame.feature | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 webapp/e2e/features/competitiveGame.feature diff --git a/webapp/e2e/features/competitiveGame.feature b/webapp/e2e/features/competitiveGame.feature new file mode 100644 index 00000000..30620078 --- /dev/null +++ b/webapp/e2e/features/competitiveGame.feature @@ -0,0 +1,9 @@ +Feature: Game Configurator and Competitive Game functionality + Scenario: Create Competitive Game should go to /questions + Given I am on the game configurator + When I click on new competitive game + Then I am in /questions + Scenario: Create Customized Game should go to /questions + Given I am on the game configurator + When I click on new customized game + Then I am in /questions \ No newline at end of file