diff --git a/webapp/e2e/features/record-button.feature b/webapp/e2e/features/record-button.feature new file mode 100644 index 00000000..9d2fa5dc --- /dev/null +++ b/webapp/e2e/features/record-button.feature @@ -0,0 +1,6 @@ +Feature: Seeing the records table of a user + +Scenario: The authenticated user can see their records + Given An authenticated user + When I navigate to the records page + Then I can see my records \ No newline at end of file diff --git a/webapp/e2e/steps/record-button.steps.js b/webapp/e2e/steps/record-button.steps.js new file mode 100644 index 00000000..892cf548 --- /dev/null +++ b/webapp/e2e/steps/record-button.steps.js @@ -0,0 +1,60 @@ +const puppeteer = require('puppeteer'); +const { defineFeature, loadFeature }=require('jest-cucumber'); +const setDefaultOptions = require('expect-puppeteer').setDefaultOptions +const feature = loadFeature('./features/record-button.feature'); + +let page; +let browser; + +defineFeature(feature, test => { + + beforeAll(async () => { + browser = process.env.GITHUB_ACTIONS + ? await puppeteer.launch() + : await puppeteer.launch({ headless: false, slowMo: 20 }); + page = await browser.newPage(); + //Way of setting up the timeout + setDefaultOptions({ timeout: 10000 }) + + await page + .goto("http://localhost:3000", { + waitUntil: "networkidle0", + }) + .catch(() => {}); + }); + + test('The authenticated user can see their records', ({given, when, then}) => { + let username; + let password; + + given('An authenticated user', async () => { + username = "record1"; + password = "record1"; + await expect(page).toClick('button', { text: 'SignUp' }); + await expect(page).toFill('input[name="username"]', username); + await expect(page).toFill('input[name="password"]', password); + await expect(page).toClick('button', { text: 'Add User' }); + await expect(page).toClick('a', { text: 'Already have an account? Login here.' }); + await expect(page).toClick('button', { text: 'Login' }); + await expect(page).toFill('input[name="username"]', username); + await expect(page).toFill('input[name="password"]', password); + await expect(page).toClick('button', { text: 'Login' }); + }); + + when('I navigate to the records page', async () => { + await expect(page).toClick('button', { text: 'Ver historial' }); + }); + + then('I can see my records', async () => { + await expect(page).toMatchElement("th", { text: "Preguntas acertadas" }); + await expect(page).toMatchElement("th", { text: "NÂș preguntas" }); + await expect(page).toMatchElement("th", { text: "Tiempo total" }); + await expect(page).toMatchElement("th", { text: "Fecha" }); + }); + }); + + afterAll(async ()=>{ + browser.close() + }) + +}); \ No newline at end of file diff --git a/webapp/e2e/test-environment-setup.js b/webapp/e2e/test-environment-setup.js index 7b7ed511..f7cc6f03 100644 --- a/webapp/e2e/test-environment-setup.js +++ b/webapp/e2e/test-environment-setup.js @@ -5,6 +5,7 @@ let mongoserver; let userservice; let authservice; let gatewayservice; +let recordservice; async function startServer() { console.log('Starting MongoDB memory server...'); @@ -13,6 +14,7 @@ async function startServer() { process.env.MONGODB_URI = mongoUri; userservice = await require("../../users/userservice/user-service"); authservice = await require("../../users/authservice/auth-service"); + recordservice = await require("../../recordhistory/record-service"); gatewayservice = await require("../../gatewayservice/gateway-service"); }