diff --git a/frontend/cucumber.conf.js b/frontend/cucumber.conf.js index 04b7d03f..ca374ecf 100644 --- a/frontend/cucumber.conf.js +++ b/frontend/cucumber.conf.js @@ -9,7 +9,7 @@ setDefaultTimeout(60000) BeforeAll(async function () { global.browser = await chromium.launch({ headless: false, - slowMo: 0, + slowMo: 1000, }); }); diff --git a/frontend/tests/acceptance/pageObjects/LoginPage.js b/frontend/tests/acceptance/pageObjects/LoginPage.js new file mode 100644 index 00000000..b5815ce4 --- /dev/null +++ b/frontend/tests/acceptance/pageObjects/LoginPage.js @@ -0,0 +1,25 @@ +class LoginPage { + constructor() { + //url + this.url = 'http://localhost:8080' + this.loginUrl = 'http://localhost:8080/login?redirect=%2Ffiles%2F' + this.fileUrl = this.url + '/files/' + + //define selectors + this.usernameSelector = '//input[@placeholder="Username"]' + this.passwordSelector = '//input[@placeholder="Password"]' + this.loginSelector = '//input[@type="submit"]' + } + + async goToLoginUrl() { + await page.goto(this.url); + } + + async login(username, password) { + await page.fill(this.usernameSelector, username); + await page.fill(this.passwordSelector, password); + await page.click(this.loginSelector); + } +} + +module.exports = LoginPage \ No newline at end of file diff --git a/frontend/tests/acceptance/pageObjects/loginPage.js b/frontend/tests/acceptance/pageObjects/loginPage.js deleted file mode 100644 index e69de29b..00000000 diff --git a/frontend/tests/acceptance/stepDefinitions/loginContext.js b/frontend/tests/acceptance/stepDefinitions/loginContext.js index 9bfe4900..9bf40c37 100644 --- a/frontend/tests/acceptance/stepDefinitions/loginContext.js +++ b/frontend/tests/acceptance/stepDefinitions/loginContext.js @@ -2,27 +2,22 @@ const {Given, When, Then} = require('@cucumber/cucumber') // import expect for assertion const { expect } = require("@playwright/test"); -//launch url -const url = 'http://localhost:8080' +//import assert +const assert = require("assert") -//define selectors -const usernameSelector = '//input[@placeholder="Username"]' -const passwordSelector = '//input[@placeholder="Password"]' -const loginSelector = '//input[@type="submit"]' -const loginUrl = 'http://localhost:8080/login?redirect=%2Ffiles%2F' -const fileUrl = 'http://localhost:8080/files/' +//import page +const LoginPage = require("../pageObjects/LoginPage.js") +const loginPage = new LoginPage; Given('the user has browsed to the login page', async function () { - await page.goto(url); - await expect(page).toHaveURL(loginUrl); + await loginPage.goToLoginUrl(); + await expect(page).toHaveURL(loginPage.loginUrl); }); When('user logs in with username {string} and password {string}', async function (username, password) { - await page.fill(usernameSelector, username); - await page.fill(passwordSelector, password); - await page.click(loginSelector); + await loginPage.login(username,password); }); Then('user should redirect to the homepage', async function () { - await expect(page).toHaveURL(fileUrl); + await expect(page).toHaveURL(loginPage.fileUrl); }); \ No newline at end of file