diff --git a/.testcafe/Data/systemData.js b/.testcafe/Data/systemData.js new file mode 100644 index 000000000..3d5df45dd --- /dev/null +++ b/.testcafe/Data/systemData.js @@ -0,0 +1 @@ +export const MAIN_PAGE_URL = "http://localhost:9000/"; diff --git a/.testcafe/Data/userData.js b/.testcafe/Data/userData.js new file mode 100644 index 000000000..a3d54f7d0 --- /dev/null +++ b/.testcafe/Data/userData.js @@ -0,0 +1,2 @@ +export const DEFAULT_USER_EMAIL = "admin@example.com"; +export const DEFAULT_USER_PASSWORD = "admin"; diff --git a/.testcafe/Models/homePageModel.js b/.testcafe/Models/homePageModel.js new file mode 100644 index 000000000..8e400c7e6 --- /dev/null +++ b/.testcafe/Models/homePageModel.js @@ -0,0 +1,11 @@ +import { Selector, t } from "testcafe"; + +export default class HomePage { + constructor() { + this.header = Selector('[data-tc="home-header"]'); + this.catalogMenu = Selector('[data-tc="Catalog"]'); + this.productsSubMenu = Selector( + '[data-tc="catalogue"]>[aria-label="products"]' + ); + } +} diff --git a/.testcafe/Models/loginPageModel.js b/.testcafe/Models/loginPageModel.js new file mode 100644 index 000000000..5447a6fdb --- /dev/null +++ b/.testcafe/Models/loginPageModel.js @@ -0,0 +1,16 @@ +import { Selector, t } from "testcafe"; + +export default class LoginPage { + constructor() { + this.email = Selector('[data-tc="email"]'); + this.password = Selector('[data-tc="password"]'); + this.submitButton = Selector('[data-tc="submit"]'); + } + + async performLogin(putEmail, putPassword) { + await t + .typeText(this.email, putEmail) + .typeText(this.password, putPassword) + .click(this.submitButton); + } +} diff --git a/.testcafe/Tests/loginPageTests.js b/.testcafe/Tests/loginPageTests.js new file mode 100644 index 000000000..9f612dd4f --- /dev/null +++ b/.testcafe/Tests/loginPageTests.js @@ -0,0 +1,7 @@ +import * as verifier from "../Verifications/loginPageVerifications"; +import { MAIN_PAGE_URL } from "../Data/systemData"; + +fixture`Login Tests`.page(MAIN_PAGE_URL); + +verifier.verifyEmailAndPasswordDisplayed(); +verifier.verifyIfUserCanLogin(); diff --git a/.testcafe/Verifications/loginPageVerifications.js b/.testcafe/Verifications/loginPageVerifications.js new file mode 100644 index 000000000..73c32c821 --- /dev/null +++ b/.testcafe/Verifications/loginPageVerifications.js @@ -0,0 +1,20 @@ +import LoginPage from "../Models/loginPageModel"; +import HomePage from "../Models/homePageModel"; +import { DEFAULT_USER_EMAIL, DEFAULT_USER_PASSWORD } from "../Data/userData"; + +const loginPage = new LoginPage(); +const homePage = new HomePage(); + +export function verifyEmailAndPasswordDisplayed() { + test("Verify that Email and Password are displayed", async t => { + await t.expect(loginPage.email.exists).ok(); + await t.expect(loginPage.password.exists).ok(); + }); +} + +export function verifyIfUserCanLogin() { + test("PerformLogin", async t => { + await loginPage.performLogin(DEFAULT_USER_EMAIL, DEFAULT_USER_PASSWORD); + await t.expect(homePage.header.exists).ok(); + }); +} diff --git a/.testcafe/exampleTest.js b/.testcafe/exampleTest.js deleted file mode 100644 index c14729654..000000000 --- a/.testcafe/exampleTest.js +++ /dev/null @@ -1,13 +0,0 @@ -import { Selector } from "testcafe"; - -fixture("Example test").page("http://localhost:8000/dashboard/next"); - -test("User can log in", async t => { - await t - .typeText('[name="email"]', "admin@example.com") - .typeText('[name="password"]', "admin") - .click('[type="submit"]'); - - const header = await Selector('[data-tc="home-header"]').exists; - await t.expect(header).ok(); -});