From 72d77fcde1fb89e43da3ef9b1444f6a28b88453f Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Fri, 4 Nov 2022 12:51:46 +0530 Subject: [PATCH 01/60] gitflow-feature-stash: test-scripts-signup --- data/signin.js | 0 data/signup.js | 0 specs/signin.page.js | 0 specs/signup.page.js | 0 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 data/signin.js create mode 100644 data/signup.js create mode 100644 specs/signin.page.js create mode 100644 specs/signup.page.js diff --git a/data/signin.js b/data/signin.js new file mode 100644 index 0000000..e69de29 diff --git a/data/signup.js b/data/signup.js new file mode 100644 index 0000000..e69de29 diff --git a/specs/signin.page.js b/specs/signin.page.js new file mode 100644 index 0000000..e69de29 diff --git a/specs/signup.page.js b/specs/signup.page.js new file mode 100644 index 0000000..e69de29 From c6f1d6c29827e505baf2eabb6fc29e394b2d15d4 Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Fri, 4 Nov 2022 13:16:35 +0530 Subject: [PATCH 02/60] specs are added --- pageobjects/sample.page.js | 7 +++++++ specs/sample.spec.js | 8 ++++++++ specs/signin.page.js | 0 specs/signup.page.js | 0 4 files changed, 15 insertions(+) create mode 100644 pageobjects/sample.page.js create mode 100644 specs/sample.spec.js delete mode 100644 specs/signin.page.js delete mode 100644 specs/signup.page.js diff --git a/pageobjects/sample.page.js b/pageobjects/sample.page.js new file mode 100644 index 0000000..e7a2a50 --- /dev/null +++ b/pageobjects/sample.page.js @@ -0,0 +1,7 @@ +class Page { + open (path = '/') { + browser.url(path) + } +} + +module.exports = new Page() diff --git a/specs/sample.spec.js b/specs/sample.spec.js new file mode 100644 index 0000000..67994b9 --- /dev/null +++ b/specs/sample.spec.js @@ -0,0 +1,8 @@ +const Page = require('../pageobjects/sample.page') + +describe('Example test', () => { + it('should open correct app', () => { + Page.open() + expect(browser).toHaveTitle('vaah-webdriverio-testscripts') + }) +}) diff --git a/specs/signin.page.js b/specs/signin.page.js deleted file mode 100644 index e69de29..0000000 diff --git a/specs/signup.page.js b/specs/signup.page.js deleted file mode 100644 index e69de29..0000000 From 056f9ad8c96732e822940abed3f21aee1f5f232a Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Fri, 4 Nov 2022 13:36:10 +0530 Subject: [PATCH 03/60] signin sample code is working --- Page.js | 21 ++++++++++++++------- data/signin.js | 13 +++++++++++++ pageobjects/signin.page.js | 30 ++++++++++++++++++++++++++++++ specs/signin.spec.js | 9 +++++++++ 4 files changed, 66 insertions(+), 7 deletions(-) create mode 100644 pageobjects/signin.page.js create mode 100644 specs/signin.spec.js diff --git a/Page.js b/Page.js index a50c7f6..cde29a4 100644 --- a/Page.js +++ b/Page.js @@ -1,10 +1,14 @@ -const chalk = require('chalk'); +//const chalk = await import('chalk'); +//import {chalk} from "chalk"; +let color = require("cli-color"); + + const env = require('./../../../wdio.env'); /** -* main page object containing all methods, selectors and functionality -* that is shared across all page objects -*/ + * main page object containing all methods, selectors and functionality + * that is shared across all page objects + */ module.exports = class Page { constructor() { @@ -28,6 +32,9 @@ module.exports = class Page { } }; + + + } //------------------------------------------------- @@ -37,7 +44,7 @@ module.exports = class Page { //------------------------------------------------- highlight(str) { - return chalk.magenta(str); + return color.blue(str); } //------------------------------------------------- pageId(params) @@ -49,7 +56,7 @@ module.exports = class Page { //------------------------------------------------- groupId(params) { - let id = chalk.red(` + let id = color.red(` ---------------------------------------------------------------`); id += this.pageId(params); id += ` @@ -64,7 +71,7 @@ module.exports = class Page { if(params.test.expect) { id += ` - ${chalk.blue('Expect:')} ${params.test.expect}`; +${color.blue('Expects:')} ${params.test.expect}`; } diff --git a/data/signin.js b/data/signin.js index e69de29..cf8a332 100644 --- a/data/signin.js +++ b/data/signin.js @@ -0,0 +1,13 @@ +class Signin{ + + static url = '/signin'; + + constructor(url=null) { + if(url){ + this.url = url; + } + } + +} + +module.exports = new Signin(); \ No newline at end of file diff --git a/pageobjects/signin.page.js b/pageobjects/signin.page.js new file mode 100644 index 0000000..1f0861c --- /dev/null +++ b/pageobjects/signin.page.js @@ -0,0 +1,30 @@ +const Page = require('./../Page'); + +/** + * sub page containing specific selectors and methods for a specific page + */ +class SigninPage extends Page { + + constructor() { + super(); + this.params.page.id = "SI"; + this.params.page.name = "Sign-In"; + this.params.page.path = "/"; + this.params.page.url = this.base_url+this.params.page.path; + } + + //--------------------------------------------------------- + + async open (url=null) { + if(url) + { + this.params.page.url = url + } + return super.open(this.params.page.url); + } + + //--------------------------------------------------------- + +} + +module.exports = new SigninPage(); diff --git a/specs/signin.spec.js b/specs/signin.spec.js new file mode 100644 index 0000000..07b5410 --- /dev/null +++ b/specs/signin.spec.js @@ -0,0 +1,9 @@ +const Page = require('../pageobjects/signin.page') +const Data = require('../data/signin') + +describe('Example test', async () => { + it('should open correct app', async () => { + await Page.open() + await expect(browser).toHaveTitle('VaahCMS v1.7.17') + }) +}) From 8b29e9db014af8e05e344ccc93e71bc457c51e9f Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Fri, 4 Nov 2022 16:38:48 +0530 Subject: [PATCH 04/60] backup --- Page.js | 12 +++++++ data/signin.js | 27 ++++++++++++--- pageobjects/signin.page.js | 10 ++++++ specs/signin.spec.js | 69 ++++++++++++++++++++++++++++++++++---- 4 files changed, 108 insertions(+), 10 deletions(-) diff --git a/Page.js b/Page.js index cde29a4..aa969ce 100644 --- a/Page.js +++ b/Page.js @@ -4,6 +4,7 @@ let color = require("cli-color"); const env = require('./../../../wdio.env'); +const sl = require("Selector"); /** * main page object containing all methods, selectors and functionality @@ -78,5 +79,16 @@ ${color.blue('Expects:')} ${params.test.expect}`; return id; } //------------------------------------------------- + select(type, value){ + let el; + switch(type) + { + case 'dusk': + el = sl.dusk(value) + break; + } + + return el; + } //------------------------------------------------- } diff --git a/data/signin.js b/data/signin.js index cf8a332..7a37d8e 100644 --- a/data/signin.js +++ b/data/signin.js @@ -1,13 +1,32 @@ class Signin{ - static url = '/signin'; - constructor(url=null) { - if(url){ - this.url = url; + constructor() { + + this.testids = { + button: "submit" + }; + + this.asserts = { + button: "submit" + }; + + this.selector_type = 'dusk'; + + this.selectors = { + emailtextfield: "signin-email_or_username", + passtextfield: "signin-password", + submit: "signin-signin" + }; + + this.alert_message = { + invalid_alert_message: "vaahcms-user.no_user_exist" } + + } + } module.exports = new Signin(); \ No newline at end of file diff --git a/pageobjects/signin.page.js b/pageobjects/signin.page.js index 1f0861c..4e72027 100644 --- a/pageobjects/signin.page.js +++ b/pageobjects/signin.page.js @@ -1,5 +1,8 @@ const Page = require('./../Page'); +const data = require("../data/signin"); +const {supportsColor} = require("chalk"); + /** * sub page containing specific selectors and methods for a specific page */ @@ -24,6 +27,13 @@ class SigninPage extends Page { } //--------------------------------------------------------- + async invalidLogin( email, password, assert ){ + await super.select(data.selector_type, data.selectors.emailtextfield).setValue(email); + await super.select(data.selector_type, data.selectors.passtextfield).setValue(password); + await super.select(data.selector_type, data.selectors.submit).click(); + await expect(sl.role("alertdialog")).toHaveTextContaining(assert); + } + //--------------------------------------------------------- } diff --git a/specs/signin.spec.js b/specs/signin.spec.js index 07b5410..6cb12f0 100644 --- a/specs/signin.spec.js +++ b/specs/signin.spec.js @@ -1,9 +1,66 @@ -const Page = require('../pageobjects/signin.page') -const Data = require('../data/signin') +const page = require('../pageobjects/signin.page') -describe('Example test', async () => { +/*describe('Example test', async () => { it('should open correct app', async () => { - await Page.open() - await expect(browser).toHaveTitle('VaahCMS v1.7.17') + page.open() + browser.maximizeWindow(); + + await sl.dusk("signin-email_or_username").click(); + + await browser.pause(3000); + + //sl.testid(data.testids.button); + + + //await expect(browser).toHaveTitle("SANU") }) -}) +});*/ + + +let params = page.params; + +params.group.count = 1; +params.group.name = 'Sign-In'; + +describe(page.groupId(params), async() => { + + //---------------------------------------------------------------------------------------- + + /*params.test = { + count: 1.1, + name: "Verify user is able to click on the textfields(email & password)", + expect: "user should be able to click", + }; + it(page.testId(params), async () => { + await page.open(); + browser.maximizeWindow(); + await sl.dusk(data.dusk.emailtextfield).click(); + await browser.pause(3000); + await sl.dusk(data.dusk.passtextfield).click(); + await browser.pause(3000); + });*/ + +//---------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- + + params.test = { + count: 1.2, + name: "Verify sign-in into the application using invalid credentials", + expect: "User should not be able to logged in and an error message should be displayed.", + }; + it(page.testId(params), async () => { + await page.open(); + await browser.maximizeWindow(); + + //await page.invalidLogin(data.selectors.emailtextfield, data.selectors.passtextfield) + + /*await sl.dusk(data.dusk.emailtextfield).setValue(email); + await sl.dusk(data.dusk.passtextfield).setValue(password); + await sl.dusk(data.dusk.submit).click(); + await expect(sl.role("alertdialog")).toHaveTextContaining(data.alert_message.invalid_alert_message);*/ + + }); + + +}) \ No newline at end of file From 6ff0b2a0f692e7a8b1f483188bf029d807d5abc0 Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Fri, 4 Nov 2022 17:25:17 +0530 Subject: [PATCH 05/60] new methods --- Page.js | 12 ------ Selector.js | 12 ++++++ data/signin.js | 24 +++-------- pageobjects/signin.page.js | 37 ++++++++++++---- specs/signin.spec.js | 86 ++++++++++---------------------------- 5 files changed, 69 insertions(+), 102 deletions(-) diff --git a/Page.js b/Page.js index aa969ce..cde29a4 100644 --- a/Page.js +++ b/Page.js @@ -4,7 +4,6 @@ let color = require("cli-color"); const env = require('./../../../wdio.env'); -const sl = require("Selector"); /** * main page object containing all methods, selectors and functionality @@ -79,16 +78,5 @@ ${color.blue('Expects:')} ${params.test.expect}`; return id; } //------------------------------------------------- - select(type, value){ - let el; - switch(type) - { - case 'dusk': - el = sl.dusk(value) - break; - } - - return el; - } //------------------------------------------------- } diff --git a/Selector.js b/Selector.js index 698ee0a..6432508 100644 --- a/Selector.js +++ b/Selector.js @@ -71,6 +71,18 @@ class El{ return el; } //----------------------------------------------------- + dynamic(selector_name, selector_type='dusk'){ + let el; + switch (selector_type) + { + case 'dusk': + el = this.dusk(selector_name); + break; + + } + return el; + } + //----------------------------------------------------- } diff --git a/data/signin.js b/data/signin.js index 7a37d8e..b25ce06 100644 --- a/data/signin.js +++ b/data/signin.js @@ -1,32 +1,18 @@ class Signin{ - constructor() { - - this.testids = { - button: "submit" - }; - this.asserts = { - button: "submit" - }; - - this.selector_type = 'dusk'; + constructor() { + this.selector_type = 'data-testid'; this.selectors = { - emailtextfield: "signin-email_or_username", - passtextfield: "signin-password", - submit: "signin-signin" - }; - - this.alert_message = { - invalid_alert_message: "vaahcms-user.no_user_exist" + email: 'signin-email_or_username', + password: 'signin-password', + submit: 'signin-signin' } - } - } module.exports = new Signin(); \ No newline at end of file diff --git a/pageobjects/signin.page.js b/pageobjects/signin.page.js index 4e72027..7dd4e4a 100644 --- a/pageobjects/signin.page.js +++ b/pageobjects/signin.page.js @@ -1,7 +1,5 @@ const Page = require('./../Page'); - -const data = require("../data/signin"); -const {supportsColor} = require("chalk"); +const Sl = require('./../Selector'); /** * sub page containing specific selectors and methods for a specific page @@ -27,11 +25,34 @@ class SigninPage extends Page { } //--------------------------------------------------------- - async invalidLogin( email, password, assert ){ - await super.select(data.selector_type, data.selectors.emailtextfield).setValue(email); - await super.select(data.selector_type, data.selectors.passtextfield).setValue(password); - await super.select(data.selector_type, data.selectors.submit).click(); - await expect(sl.role("alertdialog")).toHaveTextContaining(assert); + async fillForm(email, password, data) + { + await Sl.dynamic(data.selectors.email, data.selector_type).setValue(email); + await Sl.dynamic(data.selectors.password, data.selector_type).setValue(password); + } + //--------------------------------------------------------- + async clickSubmit(data) + { + await Sl.dynamic(data.selectors.submit, data.selector_type).click(); + } + //--------------------------------------------------------- + async fillAndSubmit(email, password, data) + { + await this.fillForm(email, password, data) + await this.clickSubmit(data) + + } + //--------------------------------------------------------- + async submitAndAssert(email, password, data, assert) + { + await this.fillAndSubmit(email, password, data) + await expect(Sl.role("alertdialog")).toHaveTextContaining(assert); + } + //--------------------------------------------------------- + async emptyPassword(email, password, data, assert) + { + await this.fillAndSubmit(email, password, data) + await expect(Sl.role("alertdialog")).toHaveTextContaining(assert); } //--------------------------------------------------------- diff --git a/specs/signin.spec.js b/specs/signin.spec.js index 6cb12f0..c1cdf3e 100644 --- a/specs/signin.spec.js +++ b/specs/signin.spec.js @@ -1,66 +1,26 @@ -const page = require('../pageobjects/signin.page') - -/*describe('Example test', async () => { - it('should open correct app', async () => { - page.open() - browser.maximizeWindow(); - - await sl.dusk("signin-email_or_username").click(); - - await browser.pause(3000); - - //sl.testid(data.testids.button); - - - //await expect(browser).toHaveTitle("SANU") +const Page = require('../pageobjects/signin.page') +const Data = require('../data/signin') +const selector_type = 'dusk'; + +describe('Signin', async () => { + it('Invalid Login', async () => { + await Page.open() + await Page.submitAndAssert( + 'test@gmzail.com', + 'password', + Data, + "vaahcms-user.no_user_exist" + ); }) -});*/ - - -let params = page.params; - -params.group.count = 1; -params.group.name = 'Sign-In'; - -describe(page.groupId(params), async() => { - - //---------------------------------------------------------------------------------------- - - /*params.test = { - count: 1.1, - name: "Verify user is able to click on the textfields(email & password)", - expect: "user should be able to click", - }; - it(page.testId(params), async () => { - await page.open(); - browser.maximizeWindow(); - await sl.dusk(data.dusk.emailtextfield).click(); - await browser.pause(3000); - await sl.dusk(data.dusk.passtextfield).click(); - await browser.pause(3000); - });*/ - -//---------------------------------------------------------------------------------------- -//---------------------------------------------------------------------------------------- -//---------------------------------------------------------------------------------------- - - params.test = { - count: 1.2, - name: "Verify sign-in into the application using invalid credentials", - expect: "User should not be able to logged in and an error message should be displayed.", - }; - it(page.testId(params), async () => { - await page.open(); - await browser.maximizeWindow(); - - //await page.invalidLogin(data.selectors.emailtextfield, data.selectors.passtextfield) - - /*await sl.dusk(data.dusk.emailtextfield).setValue(email); - await sl.dusk(data.dusk.passtextfield).setValue(password); - await sl.dusk(data.dusk.submit).click(); - await expect(sl.role("alertdialog")).toHaveTextContaining(data.alert_message.invalid_alert_message);*/ - - }); + it('Valid Email And Empty Password Validation', async () => { + await Page.open() + await Page.submitAndAssert( + 'we@webreinvent.com', + '', + Data, + "Invalid credentials" + ); + }) -}) \ No newline at end of file +}) From ffd8264acd1d59f6d013ddea751b120e2319fc27 Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Fri, 4 Nov 2022 20:02:05 +0530 Subject: [PATCH 06/60] new script added --- data/signin.js | 2 +- specs/signin.spec.js | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/data/signin.js b/data/signin.js index b25ce06..6dde28a 100644 --- a/data/signin.js +++ b/data/signin.js @@ -4,7 +4,7 @@ class Signin{ constructor() { - this.selector_type = 'data-testid'; + this.selector_type = 'dusk'; this.selectors = { email: 'signin-email_or_username', password: 'signin-password', diff --git a/specs/signin.spec.js b/specs/signin.spec.js index c1cdf3e..9b86472 100644 --- a/specs/signin.spec.js +++ b/specs/signin.spec.js @@ -11,6 +11,7 @@ describe('Signin', async () => { Data, "vaahcms-user.no_user_exist" ); + browser.refresh(); }) it('Valid Email And Empty Password Validation', async () => { @@ -21,6 +22,19 @@ describe('Signin', async () => { Data, "Invalid credentials" ); + browser.refresh(); + await browser.pause(3000); }) + it('Validate with empty Email text-field', async () => { + await Page.open() + await Page.submitAndAssert( + '', + 'webreinvent', + Data, + "vaahcms-login.email_or_username_required" + ); + }) + + }) From 8ba085239550ec23efaf2dd63a6de71e868d4987 Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Sat, 5 Nov 2022 13:28:05 +0530 Subject: [PATCH 07/60] tests in file --- Assert.js | 14 ++++++++--- data/signin.js | 50 +++++++++++++++++++++++++++++++++++++- pageobjects/signin.page.js | 10 +++++--- specs/signin.spec.js | 42 ++++++++++++-------------------- 4 files changed, 81 insertions(+), 35 deletions(-) diff --git a/Assert.js b/Assert.js index 23cb374..19eec85 100644 --- a/Assert.js +++ b/Assert.js @@ -2,21 +2,27 @@ const env = require('./../../../wdio.env'); class Assert{ - pause() + async pause() { if(env.is_human) { - browser.pause(env.is_human_pause*1000); + await browser.pause(env.is_human_pause*1000); } } - pageTitle(text) + async refresh() + { + await browser.refresh(); + await browser.pause(2000); + } + + async pageTitle(text) { return expect(browser).toHaveTitleContaining(text); } - text(selector, text) + async text(selector, text) { return expect(selector).toHaveTextContaining(text); } diff --git a/data/signin.js b/data/signin.js index 6dde28a..5bd0d84 100644 --- a/data/signin.js +++ b/data/signin.js @@ -3,13 +3,61 @@ class Signin{ constructor() { - this.selector_type = 'dusk'; + this.params = { + group:{ + count: null, + name: null, + } + } this.selectors = { email: 'signin-email_or_username', password: 'signin-password', submit: 'signin-signin' } + this.params.page = { + id: "SL", + name: "Sign In", + path: "/solutions", + url: '/' + } + + this.groups = [ + { + count: 0, + name:"Validation", + tests: [ + { + count: 0, + name: "Invalid Credentials", + expect: "Invalid Credentials", + title: "Validate with invalid credentials", + username: "asf", + password: "", + assert: "The email or username field is required." + } + ] + } + ] + + /*this.tests = { + group:{ + count: 1, + name: "Validation", + tests: { + "1.1": { + count: 1.1, + name: "Invalid Credentials", + expect: "Invalid Credentials", + title: "Validate with invalid credentials", + username: "asf", + password: "", + assert: "The email or username field is required." + } + } + }, + + }*/ } diff --git a/pageobjects/signin.page.js b/pageobjects/signin.page.js index 7dd4e4a..64a1e23 100644 --- a/pageobjects/signin.page.js +++ b/pageobjects/signin.page.js @@ -25,6 +25,8 @@ class SigninPage extends Page { } //--------------------------------------------------------- + + async fillForm(email, password, data) { await Sl.dynamic(data.selectors.email, data.selector_type).setValue(email); @@ -49,13 +51,13 @@ class SigninPage extends Page { await expect(Sl.role("alertdialog")).toHaveTextContaining(assert); } //--------------------------------------------------------- - async emptyPassword(email, password, data, assert) + + async submitAndLogout(email, password, data) { await this.fillAndSubmit(email, password, data) - await expect(Sl.role("alertdialog")).toHaveTextContaining(assert); + await Sl.role("menuitem").moveTo(data); + await Sl.$('=Logout').click(data); } - //--------------------------------------------------------- - } module.exports = new SigninPage(); diff --git a/specs/signin.spec.js b/specs/signin.spec.js index 9b86472..0e2d55a 100644 --- a/specs/signin.spec.js +++ b/specs/signin.spec.js @@ -1,40 +1,30 @@ const Page = require('../pageobjects/signin.page') const Data = require('../data/signin') +const Sl = require("./../Selector"); +const assert = require("./../Assert"); const selector_type = 'dusk'; +let params = Data.params; + +params.group = Data.groups[0]; + describe('Signin', async () => { - it('Invalid Login', async () => { - await Page.open() - await Page.submitAndAssert( - 'test@gmzail.com', - 'password', - Data, - "vaahcms-user.no_user_exist" - ); - browser.refresh(); - }) - it('Valid Email And Empty Password Validation', async () => { - await Page.open() - await Page.submitAndAssert( - 'we@webreinvent.com', - '', - Data, - "Invalid credentials" - ); - browser.refresh(); - await browser.pause(3000); - }) + params.test = Data.groups[0].tests[0]; + + console.log(params); - it('Validate with empty Email text-field', async () => { + it(Page.testId(params), async () => { await Page.open() await Page.submitAndAssert( - '', - 'webreinvent', + params.email, + params.password, Data, - "vaahcms-login.email_or_username_required" + params.test.assert ); + //browser.refresh(); + //await browser.pause(3000); + await assert.refresh(); }) - }) From 6509cbb7d738d395268ec70b96bbf797c3444201 Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Sat, 5 Nov 2022 19:45:13 +0530 Subject: [PATCH 08/60] SignIn:TestScripts --- Selector.js | 10 ++ data/signin.js | 125 ++++++++++++++++++++- pageobjects/signin.page.js | 101 ++++++++++++++++- specs/signin.spec.js | 221 ++++++++++++++++++++++++++++++++++++- 4 files changed, 448 insertions(+), 9 deletions(-) diff --git a/Selector.js b/Selector.js index 6432508..30210cd 100644 --- a/Selector.js +++ b/Selector.js @@ -46,6 +46,16 @@ class El{ return el; } //----------------------------------------------------- + icon(name,value=null) + { + let el = this.attr('data-icon', name); + if(value) + { + el.setValue(value) + } + return el; + } + //----------------------------------------------------- dusk(name,value=null) { let el = this.attr('dusk', name); diff --git a/data/signin.js b/data/signin.js index 5bd0d84..18318bb 100644 --- a/data/signin.js +++ b/data/signin.js @@ -30,12 +30,131 @@ class Signin{ { count: 0, name: "Invalid Credentials", - expect: "Invalid Credentials", + expect: "User should not be able to signin and an error message should be displayed", title: "Validate with invalid credentials", - username: "asf", + email: "sanu@gmail.com", + password: "12345", + assert: "No user exist" + }, + { + count: 1, + name: "Invalid email and Valid Password", + expect: "User should not be able to signin and an error message should be displayed", + email: "sanu@gmail.com", + password: "admin@vaahcms", + assert: "No user exist" + }, + { + count: 2, + name: "Valid email and Invalid Password", + expect: "User should not be able to signin and an error message should be displayed", + email: "we@webreinvent.com", + password: "123456", + assert: "Invalid credentials" + }, + { + count: 3, + name: "Valid Credentials", + expect: "User should be able to signin and signout from the application successfully.", + email: "we@webreinvent.com", + password: "admin@vaahcms", + assert: ["Welcome to Vaah" , "cms"] + }, + { + count: 4, + name: "Verfiy Heading of the SignIn Page", + expect: "Heading of the signin page should be correct", + assert: "Sign In" + }, + { + count: 5, + name: "Verify forgot password link functionality", + expect: "User should be able to click on forgot password link and forgot password page should be displayed", + assert: "Forgot Password?" + }, + { + count: 6, + name: "Verify user is able to remove text from email textfield", + expect: "User should be able to remove text from email textfield", + email: "we@webreinvent.com", + }, + { + count: 7, + name: "Verify user is able to remove text from email textfield", + expect: "User should be able to remove text from email textfield", + password: "admin@vaahcms" + }, + { + count: 8, + name: "Verify user is able to signin using alphabetic characters in emailtextfield", + expect: "User should not be able to signin and an error message should be displayed", + email: "satyajeetsinghsanu", + password: "12345", + assert: "No user exist" + }, + { + count: 9, + name: "Verify user is able to signin using numeric characters in emailtextfield", + expect: "User should not be able to signin and an error message should be displayed", + email: "123456789", + password: "12345", + assert: "No user exist" + }, + { + count: 10, + name: "Verify user is able to signin with blank emailtextfield", + expect: "User should not be able to signin and an error message should be displayed", + email: "", + password: "admin@vaahcms", + assert: "The email or username field is required." + }, + { + count: 11, + name: "Verify user is able to signin with blank passwordtextfield", + expect: "User should not be able to signin and an error message should be displayed", + email: "we@webreinvent.com", + password: "", + assert: "Invalid credentials" + }, + { + count: 12, + name: "Verify user is able to signin with both email and password textfields blank", + expect: "User should not be able to signin and an error message should be displayed", + email: "", password: "", assert: "The email or username field is required." - } + }, + { + count: 13, + name: "Verify by clicking on the eye icon password should be shown for Password text-field", + expect: "Password should be shown when user click on the eye icon.", + email: "", + password: "1323456", + }, + { + count: 14, + name: "Verify that the labelled text present in Submit button is properly displayed", + expect: "Labelled text should be properly displayed.", + assert: "Sign In" + }, + { + count: 15, + name: "Verify logging into the application and browsing back", + expect: " User should not get logged out.", + email: "we@webreinvent.com", + password: "admin@vaahcms", + assert: ["Welcome to Vaah" , "cms"] + + }, + { + count: 16, + name: "Verify logging out from the application and browsing back ", + expect: " User should not get logged in again..", + email: "we@webreinvent.com", + password: "admin@vaahcms", + assert: "Sign In" + + }, ] } ] diff --git a/pageobjects/signin.page.js b/pageobjects/signin.page.js index 64a1e23..7b03202 100644 --- a/pageobjects/signin.page.js +++ b/pageobjects/signin.page.js @@ -1,5 +1,8 @@ const Page = require('./../Page'); const Sl = require('./../Selector'); +const Data = require("../data/signin"); +const assert = require("assert"); +const getText = require("webdriverio/build/commands/element/getText"); /** * sub page containing specific selectors and methods for a specific page @@ -26,13 +29,53 @@ class SigninPage extends Page { //--------------------------------------------------------- + async refresh() + { + await browser.refresh(); + await browser.pause(2000); + } + //--------------------------------------------------------- + async browseBack() + { + await browser.back(); + } + //--------------------------------------------------------- + async browseForward() + { + await browser.forward(); + } + async assertion(assert) + { + await expect(Sl.$('h3')).toHaveTextContaining(assert); + } + //--------------------------------------------------------- async fillForm(email, password, data) { await Sl.dynamic(data.selectors.email, data.selector_type).setValue(email); await Sl.dynamic(data.selectors.password, data.selector_type).setValue(password); } //--------------------------------------------------------- + async fillAndRemoveEmail(email,data) + { + const emailTextField = await Sl.dynamic(data.selectors.email, data.selector_type); + emailTextField.setValue(email); + await browser.pause(2000); + emailTextField.clearValue(); + } + //--------------------------------------------------------- + async fillAndRemovePassword(password,data) { + const passwordTextField = await Sl.dynamic(data.selectors.password, data.selector_type); + passwordTextField.setValue(password); + await browser.pause(2000); + passwordTextField.clearValue(); + } + //--------------------------------------------------------- + async submitFunctionality(data,assert) + { + await expect(Sl.dynamic(data.selectors.submit, data.selector_type)).toHaveTextContaining(assert); + } + //--------------------------------------------------------- async clickSubmit(data) { await Sl.dynamic(data.selectors.submit, data.selector_type).click(); @@ -52,11 +95,67 @@ class SigninPage extends Page { } //--------------------------------------------------------- - async submitAndLogout(email, password, data) + async submitAndLogout(email, password, data, assert) { await this.fillAndSubmit(email, password, data) + await expect(Sl.$('h2')).toHaveTextContaining(assert); + await Sl.role("menuitem").moveTo(data); + await Sl.$('=Logout').click(data); + } + + //--------------------------------------------------------- + async signInAndBrowseBack(email, password, data,assert) + { + await this.fillForm(email, password, data) + await this.clickSubmit(data) + await browser.pause(2000); + await browser.back(); + await browser.pause(2000); + await browser.forward(); + await expect(Sl.$('h2')).toHaveTextContaining(assert); await Sl.role("menuitem").moveTo(data); await Sl.$('=Logout').click(data); + + } + + //--------------------------------------------------------- + async signOutAndBrowseBack(email, password, data,assert) + { + await this.fillForm(email, password, data) + await this.clickSubmit(data) + await Sl.role("menuitem").moveTo(data); + await Sl.$('=Logout').click(data); + await browser.pause(2000); + await browser.back(); + await expect(Sl.$('h3')).toHaveTextContaining(assert); + + } + + //--------------------------------------------------------- + async signInClosingWindow(email, password, data) + { + await this.fillForm(email, password, data) + await this.clickSubmit(data) + await browser.pause(2000) + const title = browser.getTitle(); + console.log(title); + browser.closeWindow() + + } + //--------------------------------------------------------- + + async forgotPassword(assert) + { + await Sl.$('=Forgot Password?').click(); + await expect(Sl.$('h3')).toHaveTextContaining(assert); + } + //--------------------------------------------------------- + + async eyeButton(password,data,assert) + { + await Sl.dynamic(data.selectors.password, data.selector_type).setValue(password); + await browser.pause(2000); + await Sl.icon("eye").click(); } } diff --git a/specs/signin.spec.js b/specs/signin.spec.js index 0e2d55a..0f64dbf 100644 --- a/specs/signin.spec.js +++ b/specs/signin.spec.js @@ -17,14 +17,225 @@ describe('Signin', async () => { it(Page.testId(params), async () => { await Page.open() await Page.submitAndAssert( - params.email, - params.password, + params.test.email, + params.test.password, Data, params.test.assert ); - //browser.refresh(); - //await browser.pause(3000); - await assert.refresh(); + await Page.refresh(); }) + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[1]; + + it(Page.testId(params), async () => { + await Page.open() + await Page.submitAndAssert( + params.test.email, + params.test.password, + Data, + params.test.assert + ); + await Page.refresh(); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[2]; + + it(Page.testId(params), async () => { + await Page.open() + await Page.submitAndAssert( + params.test.email, + params.test.password, + Data, + params.test.assert + ); + await Page.refresh(); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[3]; + + it(Page.testId(params), async () => { + await Page.open() + await Page.submitAndLogout( + params.test.email, + params.test.password, + Data, + params.test.assert + ); + await Page.refresh(); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[4]; + + it(Page.testId(params), async () => { + await Page.open() + await Page.assertion( + params.test.assert + ) + await Page.refresh(); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[5]; + + it(Page.testId(params), async () => { + await Page.open() + await Page.forgotPassword( + params.test.assert + ) + await Page.refresh(); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[6]; + + it(Page.testId(params), async () => { + await Page.open() + await Page.fillAndRemoveEmail( + params.test.email, + params.test.password, + Data + ) + await Page.refresh(); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[7]; + + it(Page.testId(params), async () => { + await Page.open() + await Page.fillAndRemovePassword( + params.test.password, + Data + ) + await Page.refresh(); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[8]; + + it(Page.testId(params), async () => { + await Page.open() + await Page.submitAndAssert( + params.test.email, + params.test.password, + Data, + params.test.assert + ); + await Page.refresh(); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[9]; + + it(Page.testId(params), async () => { + await Page.open() + await Page.submitAndAssert( + params.test.email, + params.test.password, + Data, + params.test.assert + ); + await Page.refresh(); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[10]; + + it(Page.testId(params), async () => { + await Page.open() + await Page.submitAndAssert( + params.test.email, + params.test.password, + Data, + params.test.assert + ); + await Page.refresh(); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[11]; + + it(Page.testId(params), async () => { + await Page.open() + await Page.submitAndAssert( + params.test.email, + params.test.password, + Data, + params.test.assert + ); + await Page.refresh(); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[12]; + + it(Page.testId(params), async () => { + await Page.open() + await Page.submitAndAssert( + params.test.email, + params.test.password, + Data, + params.test.assert + ); + await Page.refresh(); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[13]; + + it(Page.testId(params), async () => { + await Page.open() + await Page.eyeButton( + params.test.password, + Data, + ); + await Page.refresh(); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[14]; + + it(Page.testId(params), async () => { + await Page.open() + await Page.submitFunctionality( + Data, + params.test.assert + ); + await Page.refresh(); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[15]; + + it(Page.testId(params), async () => { + await Page.open() + await Page.signInAndBrowseBack( + params.test.email, + params.test.password, + Data, + params.test.assert + ); + await Page.refresh(); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[16]; + + it(Page.testId(params), async () => { + await Page.open() + await Page.signOutAndBrowseBack( + params.test.email, + params.test.password, + Data, + params.test.assert + ); + await Page.refresh(); + }) + + //------------------------------------------------------------------------------------------------------------------ + }) From 97daba6ec6679209090fc9733e6ec1ef0ce2e6fb Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Mon, 7 Nov 2022 15:37:13 +0530 Subject: [PATCH 09/60] updated --- data/signin.js | 18 +++++++++++------- pageobjects/signin.page.js | 37 +++++++++++++++++-------------------- 2 files changed, 28 insertions(+), 27 deletions(-) diff --git a/data/signin.js b/data/signin.js index 18318bb..c08710d 100644 --- a/data/signin.js +++ b/data/signin.js @@ -4,6 +4,7 @@ class Signin{ constructor() { this.selector_type = 'dusk'; + this.params = { group:{ count: null, @@ -24,11 +25,11 @@ class Signin{ this.groups = [ { - count: 0, + count: 1, name:"Validation", tests: [ { - count: 0, + count: 1.1, name: "Invalid Credentials", expect: "User should not be able to signin and an error message should be displayed", title: "Validate with invalid credentials", @@ -37,22 +38,25 @@ class Signin{ assert: "No user exist" }, { - count: 1, + count: 1.2, name: "Invalid email and Valid Password", expect: "User should not be able to signin and an error message should be displayed", - email: "sanu@gmail.com", + email: "satyajeet@gmail.com", password: "admin@vaahcms", assert: "No user exist" }, { - count: 2, + count: 1.3, name: "Valid email and Invalid Password", expect: "User should not be able to signin and an error message should be displayed", email: "we@webreinvent.com", password: "123456", assert: "Invalid credentials" }, - { + ] + } + ] + /*{ count: 3, name: "Valid Credentials", expect: "User should be able to signin and signout from the application successfully.", @@ -157,7 +161,7 @@ class Signin{ }, ] } - ] + ]*/ /*this.tests = { group:{ diff --git a/pageobjects/signin.page.js b/pageobjects/signin.page.js index 7b03202..d08f728 100644 --- a/pageobjects/signin.page.js +++ b/pageobjects/signin.page.js @@ -34,28 +34,24 @@ class SigninPage extends Page { await browser.refresh(); await browser.pause(2000); } + //--------------------------------------------------------- - async browseBack() - { - await browser.back(); - } - //--------------------------------------------------------- - async browseForward() - { - await browser.forward(); - } + async assertion(assert) { await expect(Sl.$('h3')).toHaveTextContaining(assert); } //--------------------------------------------------------- + async fillForm(email, password, data) { await Sl.dynamic(data.selectors.email, data.selector_type).setValue(email); await Sl.dynamic(data.selectors.password, data.selector_type).setValue(password); } + //--------------------------------------------------------- + async fillAndRemoveEmail(email,data) { const emailTextField = await Sl.dynamic(data.selectors.email, data.selector_type); @@ -63,36 +59,47 @@ class SigninPage extends Page { await browser.pause(2000); emailTextField.clearValue(); } + //--------------------------------------------------------- + async fillAndRemovePassword(password,data) { const passwordTextField = await Sl.dynamic(data.selectors.password, data.selector_type); passwordTextField.setValue(password); await browser.pause(2000); passwordTextField.clearValue(); } + //--------------------------------------------------------- + async submitFunctionality(data,assert) { await expect(Sl.dynamic(data.selectors.submit, data.selector_type)).toHaveTextContaining(assert); } + //--------------------------------------------------------- + async clickSubmit(data) { await Sl.dynamic(data.selectors.submit, data.selector_type).click(); } + //--------------------------------------------------------- + async fillAndSubmit(email, password, data) { await this.fillForm(email, password, data) await this.clickSubmit(data) } + //--------------------------------------------------------- + async submitAndAssert(email, password, data, assert) { await this.fillAndSubmit(email, password, data) await expect(Sl.role("alertdialog")).toHaveTextContaining(assert); } + //--------------------------------------------------------- async submitAndLogout(email, password, data, assert) @@ -119,6 +126,7 @@ class SigninPage extends Page { } //--------------------------------------------------------- + async signOutAndBrowseBack(email, password, data,assert) { await this.fillForm(email, password, data) @@ -131,17 +139,6 @@ class SigninPage extends Page { } - //--------------------------------------------------------- - async signInClosingWindow(email, password, data) - { - await this.fillForm(email, password, data) - await this.clickSubmit(data) - await browser.pause(2000) - const title = browser.getTitle(); - console.log(title); - browser.closeWindow() - - } //--------------------------------------------------------- async forgotPassword(assert) From b8d35a01ad7c41ddebae359868c46f5833526af4 Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Mon, 7 Nov 2022 16:13:18 +0530 Subject: [PATCH 10/60] updated scripts --- data/signin.js | 39 +++++++++--------- pageobjects/signin.page.js | 4 ++ specs/signin.spec.js | 83 ++++++++++++++++++++------------------ 3 files changed, 65 insertions(+), 61 deletions(-) diff --git a/data/signin.js b/data/signin.js index c08710d..31e86dd 100644 --- a/data/signin.js +++ b/data/signin.js @@ -53,11 +53,8 @@ class Signin{ password: "123456", assert: "Invalid credentials" }, - ] - } - ] - /*{ - count: 3, + { + count: 1.4, name: "Valid Credentials", expect: "User should be able to signin and signout from the application successfully.", email: "we@webreinvent.com", @@ -65,31 +62,31 @@ class Signin{ assert: ["Welcome to Vaah" , "cms"] }, { - count: 4, + count: 1.5, name: "Verfiy Heading of the SignIn Page", expect: "Heading of the signin page should be correct", assert: "Sign In" }, { - count: 5, + count: 1.6, name: "Verify forgot password link functionality", expect: "User should be able to click on forgot password link and forgot password page should be displayed", assert: "Forgot Password?" }, { - count: 6, + count: 1.7, name: "Verify user is able to remove text from email textfield", expect: "User should be able to remove text from email textfield", email: "we@webreinvent.com", }, { - count: 7, - name: "Verify user is able to remove text from email textfield", - expect: "User should be able to remove text from email textfield", + count: 1.8, + name: "Verify user is able to remove text from password textfield", + expect: "User should be able to remove text from password textfield", password: "admin@vaahcms" }, { - count: 8, + count: 1.9, name: "Verify user is able to signin using alphabetic characters in emailtextfield", expect: "User should not be able to signin and an error message should be displayed", email: "satyajeetsinghsanu", @@ -97,7 +94,7 @@ class Signin{ assert: "No user exist" }, { - count: 9, + count: 2.1, name: "Verify user is able to signin using numeric characters in emailtextfield", expect: "User should not be able to signin and an error message should be displayed", email: "123456789", @@ -105,7 +102,7 @@ class Signin{ assert: "No user exist" }, { - count: 10, + count: 2.2, name: "Verify user is able to signin with blank emailtextfield", expect: "User should not be able to signin and an error message should be displayed", email: "", @@ -113,7 +110,7 @@ class Signin{ assert: "The email or username field is required." }, { - count: 11, + count: 2.3, name: "Verify user is able to signin with blank passwordtextfield", expect: "User should not be able to signin and an error message should be displayed", email: "we@webreinvent.com", @@ -121,7 +118,7 @@ class Signin{ assert: "Invalid credentials" }, { - count: 12, + count: 2.4, name: "Verify user is able to signin with both email and password textfields blank", expect: "User should not be able to signin and an error message should be displayed", email: "", @@ -129,20 +126,20 @@ class Signin{ assert: "The email or username field is required." }, { - count: 13, + count: 2.5, name: "Verify by clicking on the eye icon password should be shown for Password text-field", expect: "Password should be shown when user click on the eye icon.", email: "", password: "1323456", }, { - count: 14, + count: 2.6, name: "Verify that the labelled text present in Submit button is properly displayed", expect: "Labelled text should be properly displayed.", assert: "Sign In" }, { - count: 15, + count: 2.7, name: "Verify logging into the application and browsing back", expect: " User should not get logged out.", email: "we@webreinvent.com", @@ -151,7 +148,7 @@ class Signin{ }, { - count: 16, + count: 2.8, name: "Verify logging out from the application and browsing back ", expect: " User should not get logged in again..", email: "we@webreinvent.com", @@ -161,7 +158,7 @@ class Signin{ }, ] } - ]*/ + ] /*this.tests = { group:{ diff --git a/pageobjects/signin.page.js b/pageobjects/signin.page.js index d08f728..56477d6 100644 --- a/pageobjects/signin.page.js +++ b/pageobjects/signin.page.js @@ -111,6 +111,7 @@ class SigninPage extends Page { } //--------------------------------------------------------- + async signInAndBrowseBack(email, password, data,assert) { await this.fillForm(email, password, data) @@ -146,6 +147,7 @@ class SigninPage extends Page { await Sl.$('=Forgot Password?').click(); await expect(Sl.$('h3')).toHaveTextContaining(assert); } + //--------------------------------------------------------- async eyeButton(password,data,assert) @@ -157,3 +159,5 @@ class SigninPage extends Page { } module.exports = new SigninPage(); + +//---------------------------------------------------------------------------------------------------------------------- \ No newline at end of file diff --git a/specs/signin.spec.js b/specs/signin.spec.js index 0f64dbf..3817171 100644 --- a/specs/signin.spec.js +++ b/specs/signin.spec.js @@ -8,7 +8,7 @@ let params = Data.params; params.group = Data.groups[0]; -describe('Signin', async () => { +describe(Page.groupId(params), async () => { params.test = Data.groups[0].tests[0]; @@ -17,10 +17,14 @@ describe('Signin', async () => { it(Page.testId(params), async () => { await Page.open() await Page.submitAndAssert( - params.test.email, + /*params.test.email, params.test.password, Data, - params.test.assert + params.test.assert*/ + params.group.tests[0].email, + params.group.tests[0].password, + Data, + params.group.tests[0].assert ); await Page.refresh(); }) @@ -31,10 +35,10 @@ describe('Signin', async () => { it(Page.testId(params), async () => { await Page.open() await Page.submitAndAssert( - params.test.email, - params.test.password, + params.group.tests[1].email, + params.group.tests[1].password, Data, - params.test.assert + params.group.tests[1].assert ); await Page.refresh(); }) @@ -45,10 +49,10 @@ describe('Signin', async () => { it(Page.testId(params), async () => { await Page.open() await Page.submitAndAssert( - params.test.email, - params.test.password, + params.group.tests[2].email, + params.group.tests[2].password, Data, - params.test.assert + params.group.tests[2].assert ); await Page.refresh(); }) @@ -59,10 +63,10 @@ describe('Signin', async () => { it(Page.testId(params), async () => { await Page.open() await Page.submitAndLogout( - params.test.email, - params.test.password, + params.group.tests[3].email, + params.group.tests[3].password, Data, - params.test.assert + params.group.tests[3].assert ); await Page.refresh(); }) @@ -73,7 +77,7 @@ describe('Signin', async () => { it(Page.testId(params), async () => { await Page.open() await Page.assertion( - params.test.assert + params.group.tests[4].assert ) await Page.refresh(); }) @@ -84,7 +88,7 @@ describe('Signin', async () => { it(Page.testId(params), async () => { await Page.open() await Page.forgotPassword( - params.test.assert + params.group.tests[5].assert ) await Page.refresh(); }) @@ -95,8 +99,7 @@ describe('Signin', async () => { it(Page.testId(params), async () => { await Page.open() await Page.fillAndRemoveEmail( - params.test.email, - params.test.password, + params.group.tests[6].email, Data ) await Page.refresh(); @@ -108,7 +111,7 @@ describe('Signin', async () => { it(Page.testId(params), async () => { await Page.open() await Page.fillAndRemovePassword( - params.test.password, + params.group.tests[7].password, Data ) await Page.refresh(); @@ -120,10 +123,10 @@ describe('Signin', async () => { it(Page.testId(params), async () => { await Page.open() await Page.submitAndAssert( - params.test.email, - params.test.password, + params.group.tests[8].email, + params.group.tests[8].password, Data, - params.test.assert + params.group.tests[8].assert ); await Page.refresh(); }) @@ -134,10 +137,10 @@ describe('Signin', async () => { it(Page.testId(params), async () => { await Page.open() await Page.submitAndAssert( - params.test.email, - params.test.password, + params.group.tests[9].email, + params.group.tests[9].password, Data, - params.test.assert + params.group.tests[9].assert ); await Page.refresh(); }) @@ -148,10 +151,10 @@ describe('Signin', async () => { it(Page.testId(params), async () => { await Page.open() await Page.submitAndAssert( - params.test.email, - params.test.password, + params.group.tests[10].email, + params.group.tests[10].password, Data, - params.test.assert + params.group.tests[10].assert ); await Page.refresh(); }) @@ -162,10 +165,10 @@ describe('Signin', async () => { it(Page.testId(params), async () => { await Page.open() await Page.submitAndAssert( - params.test.email, - params.test.password, + params.group.tests[11].email, + params.group.tests[11].password, Data, - params.test.assert + params.group.tests[11].assert ); await Page.refresh(); }) @@ -176,10 +179,10 @@ describe('Signin', async () => { it(Page.testId(params), async () => { await Page.open() await Page.submitAndAssert( - params.test.email, - params.test.password, + params.group.tests[12].email, + params.group.tests[12].password, Data, - params.test.assert + params.group.tests[12].assert ); await Page.refresh(); }) @@ -190,7 +193,7 @@ describe('Signin', async () => { it(Page.testId(params), async () => { await Page.open() await Page.eyeButton( - params.test.password, + params.group.tests[13].password, Data, ); await Page.refresh(); @@ -203,7 +206,7 @@ describe('Signin', async () => { await Page.open() await Page.submitFunctionality( Data, - params.test.assert + params.group.tests[14].assert ); await Page.refresh(); }) @@ -214,10 +217,10 @@ describe('Signin', async () => { it(Page.testId(params), async () => { await Page.open() await Page.signInAndBrowseBack( - params.test.email, - params.test.password, + params.group.tests[15].email, + params.group.tests[15].password, Data, - params.test.assert + params.group.tests[15].assert ); await Page.refresh(); }) @@ -228,10 +231,10 @@ describe('Signin', async () => { it(Page.testId(params), async () => { await Page.open() await Page.signOutAndBrowseBack( - params.test.email, - params.test.password, + params.group.tests[16].email, + params.group.tests[16].password, Data, - params.test.assert + params.group.tests[16].assert ); await Page.refresh(); }) From e772bbbe74559e49a2693d68981e7586f1de18c0 Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Mon, 7 Nov 2022 19:37:59 +0530 Subject: [PATCH 11/60] updated test scripts --- specs/signin.spec.js | 51 +++++++++++++++++++++++++++++++++----------- 1 file changed, 38 insertions(+), 13 deletions(-) diff --git a/specs/signin.spec.js b/specs/signin.spec.js index 3817171..dd249de 100644 --- a/specs/signin.spec.js +++ b/specs/signin.spec.js @@ -1,10 +1,9 @@ const Page = require('../pageobjects/signin.page') const Data = require('../data/signin') -const Sl = require("./../Selector"); -const assert = require("./../Assert"); -const selector_type = 'dusk'; +const color = require("cli-color"); let params = Data.params; +let inputs; params.group = Data.groups[0]; @@ -12,19 +11,24 @@ describe(Page.groupId(params), async () => { params.test = Data.groups[0].tests[0]; - console.log(params); + console.log(color.red('params.test'), params.test); it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[0]; + + console.log(color.green('params.test'), inputs); + await Page.open() await Page.submitAndAssert( - /*params.test.email, - params.test.password, + inputs.email, + inputs.password, Data, - params.test.assert*/ - params.group.tests[0].email, + inputs.assert + /*Data.groups[0].tests[0].email, params.group.tests[0].password, Data, - params.group.tests[0].assert + params.group.tests[0].assert*/ ); await Page.refresh(); }) @@ -33,12 +37,18 @@ describe(Page.groupId(params), async () => { params.test = Data.groups[0].tests[1]; it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[1]; + + console.log(color.green('params.test'), inputs); + + await Page.open() await Page.submitAndAssert( - params.group.tests[1].email, - params.group.tests[1].password, + inputs.email, + inputs.password, Data, - params.group.tests[1].assert + inputs.assert ); await Page.refresh(); }) @@ -76,7 +86,7 @@ describe(Page.groupId(params), async () => { it(Page.testId(params), async () => { await Page.open() - await Page.assertion( + await Page.h3_assertion( params.group.tests[4].assert ) await Page.refresh(); @@ -241,4 +251,19 @@ describe(Page.groupId(params), async () => { //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[17]; + + it(Page.testId(params), async () => { + await Page.open() + await Page.signOutAndBrowseBack( + params.group.tests[16].email, + params.group.tests[16].password, + Data, + params.group.tests[16].assert + ); + await Page.refresh(); + }) + + //------------------------------------------------------------------------------------------------------------------ + }) From f434bfa2814283398fac3055789ffe67a88f2543 Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Mon, 7 Nov 2022 19:53:00 +0530 Subject: [PATCH 12/60] Updated test scripts --- data/signin.js | 7 +++++++ pageobjects/signin.page.js | 41 ++++++++++++++++++++++++-------------- specs/signin.spec.js | 11 ++-------- 3 files changed, 35 insertions(+), 24 deletions(-) diff --git a/data/signin.js b/data/signin.js index 31e86dd..fe07b40 100644 --- a/data/signin.js +++ b/data/signin.js @@ -156,6 +156,13 @@ class Signin{ assert: "Sign In" }, + /*{ + count: 2.9, + name: "Verifythe copyright text and symbol", + expect: "Copyright text and symbol should be present under the footer section.", + assert: "© 2022." + + },*/ ] } ] diff --git a/pageobjects/signin.page.js b/pageobjects/signin.page.js index 56477d6..f8fbd25 100644 --- a/pageobjects/signin.page.js +++ b/pageobjects/signin.page.js @@ -37,11 +37,19 @@ class SigninPage extends Page { //--------------------------------------------------------- - async assertion(assert) + async h3_assertion(assert) { await expect(Sl.$('h3')).toHaveTextContaining(assert); } + //--------------------------------------------------------- + + async h2_assertion(assert) + { + await expect(Sl.$('h2')).toHaveTextContaining(assert); + } + + //--------------------------------------------------------- async fillForm(email, password, data) @@ -102,27 +110,32 @@ class SigninPage extends Page { //--------------------------------------------------------- - async submitAndLogout(email, password, data, assert) + async moveAndLogout(data) { - await this.fillAndSubmit(email, password, data) - await expect(Sl.$('h2')).toHaveTextContaining(assert); await Sl.role("menuitem").moveTo(data); await Sl.$('=Logout').click(data); } //--------------------------------------------------------- + async submitAndLogout(email, password, data, assert) + { + await this.fillAndSubmit(email, password, data) + await this.h2_assertion(assert) + await this.moveAndLogout(data); + } + + //--------------------------------------------------------- + async signInAndBrowseBack(email, password, data,assert) { - await this.fillForm(email, password, data) - await this.clickSubmit(data) + await this.fillAndSubmit(email, password, data) await browser.pause(2000); await browser.back(); await browser.pause(2000); await browser.forward(); - await expect(Sl.$('h2')).toHaveTextContaining(assert); - await Sl.role("menuitem").moveTo(data); - await Sl.$('=Logout').click(data); + await this.h2_assertion(assert) + await this.moveAndLogout(data); } @@ -130,13 +143,11 @@ class SigninPage extends Page { async signOutAndBrowseBack(email, password, data,assert) { - await this.fillForm(email, password, data) - await this.clickSubmit(data) - await Sl.role("menuitem").moveTo(data); - await Sl.$('=Logout').click(data); + await this.fillAndSubmit(email, password, data) + await this.moveAndLogout(data); await browser.pause(2000); await browser.back(); - await expect(Sl.$('h3')).toHaveTextContaining(assert); + await this.h3_assertion(assert); } @@ -145,7 +156,7 @@ class SigninPage extends Page { async forgotPassword(assert) { await Sl.$('=Forgot Password?').click(); - await expect(Sl.$('h3')).toHaveTextContaining(assert); + await this.h3_assertion(assert); } //--------------------------------------------------------- diff --git a/specs/signin.spec.js b/specs/signin.spec.js index dd249de..b05ef50 100644 --- a/specs/signin.spec.js +++ b/specs/signin.spec.js @@ -10,15 +10,11 @@ params.group = Data.groups[0]; describe(Page.groupId(params), async () => { params.test = Data.groups[0].tests[0]; - console.log(color.red('params.test'), params.test); it(Page.testId(params), async () => { - inputs = Data.groups[0].tests[0]; - console.log(color.green('params.test'), inputs); - await Page.open() await Page.submitAndAssert( inputs.email, @@ -39,10 +35,7 @@ describe(Page.groupId(params), async () => { it(Page.testId(params), async () => { inputs = Data.groups[0].tests[1]; - console.log(color.green('params.test'), inputs); - - await Page.open() await Page.submitAndAssert( inputs.email, @@ -251,7 +244,7 @@ describe(Page.groupId(params), async () => { //------------------------------------------------------------------------------------------------------------------ - params.test = Data.groups[0].tests[17]; + /*params.test = Data.groups[0].tests[17]; it(Page.testId(params), async () => { await Page.open() @@ -262,7 +255,7 @@ describe(Page.groupId(params), async () => { params.group.tests[16].assert ); await Page.refresh(); - }) + })*/ //------------------------------------------------------------------------------------------------------------------ From 5ea36e956be18168647fcf399384838da2a06c66 Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Wed, 9 Nov 2022 12:03:16 +0530 Subject: [PATCH 13/60] updated pom --- data/signin.js | 9 ++++++++- pageobjects/signin.page.js | 14 +++++++------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/data/signin.js b/data/signin.js index fe07b40..71decec 100644 --- a/data/signin.js +++ b/data/signin.js @@ -14,7 +14,14 @@ class Signin{ this.selectors = { email: 'signin-email_or_username', password: 'signin-password', - submit: 'signin-signin' + submit: 'signin-signin', + h3: 'h3', + h2: 'h2', + alert_box: 'alertdialog', + menu_item: 'menuitem', + logout_button: '=Logout', + eye_icon: 'eye', + forgot_pasword: '=Forgot Password?' } this.params.page = { id: "SL", diff --git a/pageobjects/signin.page.js b/pageobjects/signin.page.js index f8fbd25..f04e174 100644 --- a/pageobjects/signin.page.js +++ b/pageobjects/signin.page.js @@ -39,14 +39,14 @@ class SigninPage extends Page { async h3_assertion(assert) { - await expect(Sl.$('h3')).toHaveTextContaining(assert); + await expect(Sl.$(Data.selectors.h3)).toHaveTextContaining(assert); } //--------------------------------------------------------- async h2_assertion(assert) { - await expect(Sl.$('h2')).toHaveTextContaining(assert); + await expect(Sl.$(Data.selectors.h2)).toHaveTextContaining(assert); } @@ -105,15 +105,15 @@ class SigninPage extends Page { async submitAndAssert(email, password, data, assert) { await this.fillAndSubmit(email, password, data) - await expect(Sl.role("alertdialog")).toHaveTextContaining(assert); + await expect(Sl.role(Data.selectors.alert_box)).toHaveTextContaining(assert); } //--------------------------------------------------------- async moveAndLogout(data) { - await Sl.role("menuitem").moveTo(data); - await Sl.$('=Logout').click(data); + await Sl.role(Data.selectors.menu_item).moveTo(data); + await Sl.$(Data.selectors.logout_button).click(data); } //--------------------------------------------------------- @@ -155,7 +155,7 @@ class SigninPage extends Page { async forgotPassword(assert) { - await Sl.$('=Forgot Password?').click(); + await Sl.$(Data.selectors.forgot_pasword).click(); await this.h3_assertion(assert); } @@ -165,7 +165,7 @@ class SigninPage extends Page { { await Sl.dynamic(data.selectors.password, data.selector_type).setValue(password); await browser.pause(2000); - await Sl.icon("eye").click(); + await Sl.icon(Data.selectors.eye_icon).click(); } } From 29e4e08bae8f57d0022e2c0b7f0d7996b24bfd9c Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Wed, 9 Nov 2022 12:25:58 +0530 Subject: [PATCH 14/60] updated test scripts --- specs/signin.spec.js | 81 ++++++++++++++++++++++++++------------------ 1 file changed, 48 insertions(+), 33 deletions(-) diff --git a/specs/signin.spec.js b/specs/signin.spec.js index b05ef50..5e37c3f 100644 --- a/specs/signin.spec.js +++ b/specs/signin.spec.js @@ -50,12 +50,13 @@ describe(Page.groupId(params), async () => { params.test = Data.groups[0].tests[2]; it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[2]; await Page.open() await Page.submitAndAssert( - params.group.tests[2].email, - params.group.tests[2].password, + inputs.email, + inputs.password, Data, - params.group.tests[2].assert + inputs.assert ); await Page.refresh(); }) @@ -64,12 +65,13 @@ describe(Page.groupId(params), async () => { params.test = Data.groups[0].tests[3]; it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[3]; await Page.open() await Page.submitAndLogout( - params.group.tests[3].email, - params.group.tests[3].password, + inputs.email, + inputs.password, Data, - params.group.tests[3].assert + inputs.assert ); await Page.refresh(); }) @@ -78,9 +80,10 @@ describe(Page.groupId(params), async () => { params.test = Data.groups[0].tests[4]; it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[4]; await Page.open() await Page.h3_assertion( - params.group.tests[4].assert + inputs.assert ) await Page.refresh(); }) @@ -89,9 +92,10 @@ describe(Page.groupId(params), async () => { params.test = Data.groups[0].tests[5]; it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[5]; await Page.open() await Page.forgotPassword( - params.group.tests[5].assert + inputs.assert ) await Page.refresh(); }) @@ -100,9 +104,10 @@ describe(Page.groupId(params), async () => { params.test = Data.groups[0].tests[6]; it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[6]; await Page.open() await Page.fillAndRemoveEmail( - params.group.tests[6].email, + inputs.email, Data ) await Page.refresh(); @@ -112,9 +117,10 @@ describe(Page.groupId(params), async () => { params.test = Data.groups[0].tests[7]; it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[7]; await Page.open() await Page.fillAndRemovePassword( - params.group.tests[7].password, + inputs.password, Data ) await Page.refresh(); @@ -124,12 +130,13 @@ describe(Page.groupId(params), async () => { params.test = Data.groups[0].tests[8]; it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[8]; await Page.open() await Page.submitAndAssert( - params.group.tests[8].email, - params.group.tests[8].password, + inputs.email, + inputs.password, Data, - params.group.tests[8].assert + inputs.assert ); await Page.refresh(); }) @@ -138,12 +145,13 @@ describe(Page.groupId(params), async () => { params.test = Data.groups[0].tests[9]; it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[9]; await Page.open() await Page.submitAndAssert( - params.group.tests[9].email, - params.group.tests[9].password, + inputs.email, + inputs.password, Data, - params.group.tests[9].assert + inputs.assert ); await Page.refresh(); }) @@ -152,12 +160,13 @@ describe(Page.groupId(params), async () => { params.test = Data.groups[0].tests[10]; it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[10]; await Page.open() await Page.submitAndAssert( - params.group.tests[10].email, - params.group.tests[10].password, + inputs.email, + inputs.password, Data, - params.group.tests[10].assert + inputs.assert ); await Page.refresh(); }) @@ -166,12 +175,13 @@ describe(Page.groupId(params), async () => { params.test = Data.groups[0].tests[11]; it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[11]; await Page.open() await Page.submitAndAssert( - params.group.tests[11].email, - params.group.tests[11].password, + inputs.email, + inputs.password, Data, - params.group.tests[11].assert + inputs.assert ); await Page.refresh(); }) @@ -180,12 +190,13 @@ describe(Page.groupId(params), async () => { params.test = Data.groups[0].tests[12]; it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[12]; await Page.open() await Page.submitAndAssert( - params.group.tests[12].email, - params.group.tests[12].password, + inputs.email, + inputs.password, Data, - params.group.tests[12].assert + inputs.assert ); await Page.refresh(); }) @@ -194,9 +205,10 @@ describe(Page.groupId(params), async () => { params.test = Data.groups[0].tests[13]; it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[13]; await Page.open() await Page.eyeButton( - params.group.tests[13].password, + inputs.password, Data, ); await Page.refresh(); @@ -206,10 +218,11 @@ describe(Page.groupId(params), async () => { params.test = Data.groups[0].tests[14]; it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[14]; await Page.open() await Page.submitFunctionality( Data, - params.group.tests[14].assert + inputs.assert ); await Page.refresh(); }) @@ -218,12 +231,13 @@ describe(Page.groupId(params), async () => { params.test = Data.groups[0].tests[15]; it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[15]; await Page.open() await Page.signInAndBrowseBack( - params.group.tests[15].email, - params.group.tests[15].password, + inputs.email, + inputs.password, Data, - params.group.tests[15].assert + inputs.assert ); await Page.refresh(); }) @@ -232,12 +246,13 @@ describe(Page.groupId(params), async () => { params.test = Data.groups[0].tests[16]; it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[16]; await Page.open() await Page.signOutAndBrowseBack( - params.group.tests[16].email, - params.group.tests[16].password, + inputs.email, + inputs.password, Data, - params.group.tests[16].assert + inputs.assert ); await Page.refresh(); }) From 698f5d729222823f638d1fee631de98fd4a7a04c Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Wed, 9 Nov 2022 14:09:40 +0530 Subject: [PATCH 15/60] updated data and Pom --- data/signin.js | 62 ++++++++++++++++++++++++++++++-------- pageobjects/signin.page.js | 23 +++++++++----- specs/signin.spec.js | 37 +++++++++++++++-------- 3 files changed, 91 insertions(+), 31 deletions(-) diff --git a/data/signin.js b/data/signin.js index 71decec..0036cf6 100644 --- a/data/signin.js +++ b/data/signin.js @@ -42,7 +42,11 @@ class Signin{ title: "Validate with invalid credentials", email: "sanu@gmail.com", password: "12345", - assert: "No user exist" + assert: { + error_msg: "No user exist", + signInPageTitle: "Sign In", + } + }, { count: 1.2, @@ -50,7 +54,10 @@ class Signin{ expect: "User should not be able to signin and an error message should be displayed", email: "satyajeet@gmail.com", password: "admin@vaahcms", - assert: "No user exist" + assert: { + error_msg: "No user exist", + signInPageTitle: "Sign In", + } }, { count: 1.3, @@ -58,7 +65,10 @@ class Signin{ expect: "User should not be able to signin and an error message should be displayed", email: "we@webreinvent.com", password: "123456", - assert: "Invalid credentials" + assert: { + error_msg: "Invalid credentials", + signInPageTitle: "Sign In" + } }, { count: 1.4, @@ -66,7 +76,10 @@ class Signin{ expect: "User should be able to signin and signout from the application successfully.", email: "we@webreinvent.com", password: "admin@vaahcms", - assert: ["Welcome to Vaah" , "cms"] + assert: { + homePageTitle: ["Welcome to Vaah" , "cms"], + signInPageTitle: "Sign In" + } }, { count: 1.5, @@ -98,7 +111,10 @@ class Signin{ expect: "User should not be able to signin and an error message should be displayed", email: "satyajeetsinghsanu", password: "12345", - assert: "No user exist" + assert: { + error_msg: "No user exist", + signInPageTitle: "Sign In" + } }, { count: 2.1, @@ -106,7 +122,10 @@ class Signin{ expect: "User should not be able to signin and an error message should be displayed", email: "123456789", password: "12345", - assert: "No user exist" + assert: { + error_msg: "No user exist", + signInPageTitle: "Sign In" + } }, { count: 2.2, @@ -114,7 +133,10 @@ class Signin{ expect: "User should not be able to signin and an error message should be displayed", email: "", password: "admin@vaahcms", - assert: "The email or username field is required." + assert: { + error_msg: "The email or username field is required.", + signInPageTitle: "Sign In" + } }, { count: 2.3, @@ -122,7 +144,10 @@ class Signin{ expect: "User should not be able to signin and an error message should be displayed", email: "we@webreinvent.com", password: "", - assert: "Invalid credentials" + assert: { + error_msg: "Invalid credentials", + signInPageTitle: "Sign In" + } }, { count: 2.4, @@ -130,7 +155,10 @@ class Signin{ expect: "User should not be able to signin and an error message should be displayed", email: "", password: "", - assert: "The email or username field is required." + assert: { + error_msg: "The email or username field is required.", + signInPageTitle: "Sign In" + } }, { count: 2.5, @@ -138,12 +166,16 @@ class Signin{ expect: "Password should be shown when user click on the eye icon.", email: "", password: "1323456", + assert_signInPageTitle: "Sign In" }, { count: 2.6, name: "Verify that the labelled text present in Submit button is properly displayed", expect: "Labelled text should be properly displayed.", - assert: "Sign In" + assert: { + submitButton_labelledText: "Sign In", + signInPageTitle: "Sign In" + } }, { count: 2.7, @@ -151,7 +183,10 @@ class Signin{ expect: " User should not get logged out.", email: "we@webreinvent.com", password: "admin@vaahcms", - assert: ["Welcome to Vaah" , "cms"] + assert: { + homePageTitle: ["Welcome to Vaah" , "cms"], + signInPageTitle: "Sign In" + } }, { @@ -160,7 +195,10 @@ class Signin{ expect: " User should not get logged in again..", email: "we@webreinvent.com", password: "admin@vaahcms", - assert: "Sign In" + assert: { + homePageTitle: ["Welcome to Vaah" , "cms"], + signInPageTitle: "Sign In", + } }, /*{ diff --git a/pageobjects/signin.page.js b/pageobjects/signin.page.js index f04e174..c10c92c 100644 --- a/pageobjects/signin.page.js +++ b/pageobjects/signin.page.js @@ -79,9 +79,10 @@ class SigninPage extends Page { //--------------------------------------------------------- - async submitFunctionality(data,assert) + async submitFunctionality(data,assert,assertsignin) { await expect(Sl.dynamic(data.selectors.submit, data.selector_type)).toHaveTextContaining(assert); + await this.h3_assertion(assertsignin); } //--------------------------------------------------------- @@ -102,10 +103,11 @@ class SigninPage extends Page { //--------------------------------------------------------- - async submitAndAssert(email, password, data, assert) + async submitAndAssert(email, password, data, assert,assertsignin) { await this.fillAndSubmit(email, password, data) await expect(Sl.role(Data.selectors.alert_box)).toHaveTextContaining(assert); + await this.h3_assertion(assertsignin); } //--------------------------------------------------------- @@ -118,36 +120,42 @@ class SigninPage extends Page { //--------------------------------------------------------- - async submitAndLogout(email, password, data, assert) + async submitAndLogout(email, password, data, assert,assertsignin) { await this.fillAndSubmit(email, password, data) await this.h2_assertion(assert) await this.moveAndLogout(data); + await this.h3_assertion(assertsignin); } //--------------------------------------------------------- - async signInAndBrowseBack(email, password, data,assert) + async signInAndBrowseBack(email, password, data,assert,assertsignin) { await this.fillAndSubmit(email, password, data) await browser.pause(2000); await browser.back(); + await this.h3_assertion(assertsignin); await browser.pause(2000); await browser.forward(); - await this.h2_assertion(assert) + await this.h2_assertion(assert); await this.moveAndLogout(data); } //--------------------------------------------------------- - async signOutAndBrowseBack(email, password, data,assert) + async signOutAndBrowseBack(email, password, data,assert,assertsignin) { await this.fillAndSubmit(email, password, data) + await this.h2_assertion(assert) await this.moveAndLogout(data); + await this.h3_assertion(assertsignin); await browser.pause(2000); await browser.back(); - await this.h3_assertion(assert); + + + } @@ -166,6 +174,7 @@ class SigninPage extends Page { await Sl.dynamic(data.selectors.password, data.selector_type).setValue(password); await browser.pause(2000); await Sl.icon(Data.selectors.eye_icon).click(); + await this.h3_assertion(assert); } } diff --git a/specs/signin.spec.js b/specs/signin.spec.js index 5e37c3f..1df6bf6 100644 --- a/specs/signin.spec.js +++ b/specs/signin.spec.js @@ -20,7 +20,8 @@ describe(Page.groupId(params), async () => { inputs.email, inputs.password, Data, - inputs.assert + inputs.assert.error_msg, + inputs.assert.signInPageTitle /*Data.groups[0].tests[0].email, params.group.tests[0].password, Data, @@ -41,7 +42,8 @@ describe(Page.groupId(params), async () => { inputs.email, inputs.password, Data, - inputs.assert + inputs.assert.error_msg, + inputs.assert.signInPageTitle ); await Page.refresh(); }) @@ -56,7 +58,8 @@ describe(Page.groupId(params), async () => { inputs.email, inputs.password, Data, - inputs.assert + inputs.assert.error_msg, + inputs.assert.signInPageTitle ); await Page.refresh(); }) @@ -71,7 +74,8 @@ describe(Page.groupId(params), async () => { inputs.email, inputs.password, Data, - inputs.assert + inputs.assert.homePageTitle, + inputs.assert.signInPageTitle ); await Page.refresh(); }) @@ -136,7 +140,8 @@ describe(Page.groupId(params), async () => { inputs.email, inputs.password, Data, - inputs.assert + inputs.assert.error_msg, + inputs.assert.signInPageTitle ); await Page.refresh(); }) @@ -151,7 +156,8 @@ describe(Page.groupId(params), async () => { inputs.email, inputs.password, Data, - inputs.assert + inputs.assert.error_msg, + inputs.assert.signInPageTitle ); await Page.refresh(); }) @@ -166,7 +172,8 @@ describe(Page.groupId(params), async () => { inputs.email, inputs.password, Data, - inputs.assert + inputs.assert.error_msg, + inputs.assert.signInPageTitle ); await Page.refresh(); }) @@ -181,7 +188,8 @@ describe(Page.groupId(params), async () => { inputs.email, inputs.password, Data, - inputs.assert + inputs.assert.error_msg, + inputs.assert.signInPageTitle ); await Page.refresh(); }) @@ -196,7 +204,8 @@ describe(Page.groupId(params), async () => { inputs.email, inputs.password, Data, - inputs.assert + inputs.assert.error_msg, + inputs.assert.signInPageTitle ); await Page.refresh(); }) @@ -210,6 +219,7 @@ describe(Page.groupId(params), async () => { await Page.eyeButton( inputs.password, Data, + inputs.assert_signInPageTitle ); await Page.refresh(); }) @@ -222,7 +232,8 @@ describe(Page.groupId(params), async () => { await Page.open() await Page.submitFunctionality( Data, - inputs.assert + inputs.assert.submitButton_labelledText, + inputs.assert.signInPageTitle ); await Page.refresh(); }) @@ -237,7 +248,8 @@ describe(Page.groupId(params), async () => { inputs.email, inputs.password, Data, - inputs.assert + inputs.assert.homePageTitle, + inputs.assert.signInPageTitle ); await Page.refresh(); }) @@ -252,7 +264,8 @@ describe(Page.groupId(params), async () => { inputs.email, inputs.password, Data, - inputs.assert + inputs.assert.homePageTitle, + inputs.assert.signInPageTitle ); await Page.refresh(); }) From fc9bfab997e05352bac9eac948b7b5c9b0833c1b Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Wed, 9 Nov 2022 14:21:07 +0530 Subject: [PATCH 16/60] updated --- data/signin.js | 2 +- pageobjects/signin.page.js | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/data/signin.js b/data/signin.js index 0036cf6..be178fc 100644 --- a/data/signin.js +++ b/data/signin.js @@ -21,7 +21,7 @@ class Signin{ menu_item: 'menuitem', logout_button: '=Logout', eye_icon: 'eye', - forgot_pasword: '=Forgot Password?' + forgot_password: '=Forgot Password?' } this.params.page = { id: "SL", diff --git a/pageobjects/signin.page.js b/pageobjects/signin.page.js index c10c92c..5caa31f 100644 --- a/pageobjects/signin.page.js +++ b/pageobjects/signin.page.js @@ -154,16 +154,13 @@ class SigninPage extends Page { await browser.pause(2000); await browser.back(); - - - } //--------------------------------------------------------- async forgotPassword(assert) { - await Sl.$(Data.selectors.forgot_pasword).click(); + await Sl.$(Data.selectors.forgot_password).click(); await this.h3_assertion(assert); } From 3ed23bc5480f8f05fedeccfbac93d5e816c2c21d Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Wed, 9 Nov 2022 16:46:05 +0530 Subject: [PATCH 17/60] Updated: test scripts --- data/signin.js | 132 +++++++++++++++++++-------------- pageobjects/signin.page.js | 20 ++++- specs/signin.spec.js | 148 +++++++++++++++++++------------------ 3 files changed, 170 insertions(+), 130 deletions(-) diff --git a/data/signin.js b/data/signin.js index be178fc..a8a7013 100644 --- a/data/signin.js +++ b/data/signin.js @@ -17,6 +17,7 @@ class Signin{ submit: 'signin-signin', h3: 'h3', h2: 'h2', + p: 'p', alert_box: 'alertdialog', menu_item: 'menuitem', logout_button: '=Logout', @@ -46,7 +47,6 @@ class Signin{ error_msg: "No user exist", signInPageTitle: "Sign In", } - }, { count: 1.2, @@ -83,30 +83,6 @@ class Signin{ }, { count: 1.5, - name: "Verfiy Heading of the SignIn Page", - expect: "Heading of the signin page should be correct", - assert: "Sign In" - }, - { - count: 1.6, - name: "Verify forgot password link functionality", - expect: "User should be able to click on forgot password link and forgot password page should be displayed", - assert: "Forgot Password?" - }, - { - count: 1.7, - name: "Verify user is able to remove text from email textfield", - expect: "User should be able to remove text from email textfield", - email: "we@webreinvent.com", - }, - { - count: 1.8, - name: "Verify user is able to remove text from password textfield", - expect: "User should be able to remove text from password textfield", - password: "admin@vaahcms" - }, - { - count: 1.9, name: "Verify user is able to signin using alphabetic characters in emailtextfield", expect: "User should not be able to signin and an error message should be displayed", email: "satyajeetsinghsanu", @@ -117,7 +93,7 @@ class Signin{ } }, { - count: 2.1, + count: 1.6, name: "Verify user is able to signin using numeric characters in emailtextfield", expect: "User should not be able to signin and an error message should be displayed", email: "123456789", @@ -128,7 +104,7 @@ class Signin{ } }, { - count: 2.2, + count: 1.7, name: "Verify user is able to signin with blank emailtextfield", expect: "User should not be able to signin and an error message should be displayed", email: "", @@ -139,7 +115,7 @@ class Signin{ } }, { - count: 2.3, + count: 1.8, name: "Verify user is able to signin with blank passwordtextfield", expect: "User should not be able to signin and an error message should be displayed", email: "we@webreinvent.com", @@ -150,7 +126,7 @@ class Signin{ } }, { - count: 2.4, + count: 1.9, name: "Verify user is able to signin with both email and password textfields blank", expect: "User should not be able to signin and an error message should be displayed", email: "", @@ -161,57 +137,99 @@ class Signin{ } }, { - count: 2.5, - name: "Verify by clicking on the eye icon password should be shown for Password text-field", - expect: "Password should be shown when user click on the eye icon.", - email: "", - password: "1323456", - assert_signInPageTitle: "Sign In" - }, - { - count: 2.6, - name: "Verify that the labelled text present in Submit button is properly displayed", - expect: "Labelled text should be properly displayed.", - assert: { - submitButton_labelledText: "Sign In", - signInPageTitle: "Sign In" - } - }, - { - count: 2.7, + count: 2.1, name: "Verify logging into the application and browsing back", expect: " User should not get logged out.", email: "we@webreinvent.com", password: "admin@vaahcms", assert: { - homePageTitle: ["Welcome to Vaah" , "cms"], + homePageTitle: ["Welcome to Vaah", "cms"], signInPageTitle: "Sign In" } }, { - count: 2.8, + count: 2.2, name: "Verify logging out from the application and browsing back ", expect: " User should not get logged in again..", email: "we@webreinvent.com", password: "admin@vaahcms", assert: { - homePageTitle: ["Welcome to Vaah" , "cms"], + homePageTitle: ["Welcome to Vaah", "cms"], signInPageTitle: "Sign In", } - + }, + ] + }, + { + count: 2, + name: "UI", + tests: [ + { + count: 1.1, + name: "Verfiy Heading of the SignIn Page", + expect: "Heading of the signin page should be correct", + assert: "Sign In" + }, + { + count: 1.2, + name: "Verfiy Sub-Heading of the SignIn Page", + expect: "Sub-Heading of the signin page should be correct", + assert: "Please Sign In to continue" }, /*{ - count: 2.9, - name: "Verifythe copyright text and symbol", - expect: "Copyright text and symbol should be present under the footer section.", - assert: "© 2022." + count: 1.2, + name: "Verify copyright text and symbol", + expect: "Copyright text and symbol should be present under the footer section. of the signIn page.", + + assert_copyrightText: "© 2022." + }*/ - },*/ + ] + }, + { + count: 3, + name: "functionality", + tests: [ + { + count: 1.1, + name: "Verify forgot password link functionality", + expect: "User should be able to click on forgot password link and forgot password page should be displayed", + assert: "Forgot Password?" + }, + { + count: 1.2, + name: "Verify user is able to remove text from email textfield", + expect: "User should be able to remove text from email textfield", + email: "we@webreinvent.com", + }, + { + count: 1.3, + name: "Verify user is able to remove text from password textfield", + expect: "User should be able to remove text from password textfield", + password: "admin@vaahcms" + }, + + { + count: 1.4, + name: "Verify by clicking on the eye icon password should be shown for Password text-field", + expect: "Password should be shown when user click on the eye icon.", + email: "", + password: "1323456", + assert_signInPageTitle: "Sign In" + }, + { + count: 1.5, + name: "Verify that the labelled text present in Submit button is properly displayed", + expect: "Labelled text should be properly displayed.", + assert: { + submitButton_labelledText: "Sign In", + signInPageTitle: "Sign In" + } + } ] } ] - /*this.tests = { group:{ count: 1, diff --git a/pageobjects/signin.page.js b/pageobjects/signin.page.js index 5caa31f..a07e2db 100644 --- a/pageobjects/signin.page.js +++ b/pageobjects/signin.page.js @@ -13,8 +13,8 @@ class SigninPage extends Page { super(); this.params.page.id = "SI"; this.params.page.name = "Sign-In"; - this.params.page.path = "/"; - this.params.page.url = this.base_url+this.params.page.path; + //this.params.page.path = ""; + this.params.page.url = this.base_url; } //--------------------------------------------------------- @@ -44,6 +44,13 @@ class SigninPage extends Page { //--------------------------------------------------------- + async p_assertion(assert) + { + await expect(Sl.$(Data.selectors.p)).toHaveTextContaining(assert); + } + + //--------------------------------------------------------- + async h2_assertion(assert) { await expect(Sl.$(Data.selectors.h2)).toHaveTextContaining(assert); @@ -173,6 +180,15 @@ class SigninPage extends Page { await Sl.icon(Data.selectors.eye_icon).click(); await this.h3_assertion(assert); } + + //--------------------------------------------------------- + + /*async copyRight(assert) + { + //await this.h3_assertion(assertsignin); + await expect(Sl.$(Data.selectors.p)).toHaveTextContaining(assert); + + }*/ } module.exports = new SigninPage(); diff --git a/specs/signin.spec.js b/specs/signin.spec.js index 1df6bf6..b389f23 100644 --- a/specs/signin.spec.js +++ b/specs/signin.spec.js @@ -1,6 +1,7 @@ const Page = require('../pageobjects/signin.page') const Data = require('../data/signin') const color = require("cli-color"); +const Sl = require("./../Selector"); let params = Data.params; let inputs; @@ -27,7 +28,7 @@ describe(Page.groupId(params), async () => { Data, params.group.tests[0].assert*/ ); - await Page.refresh(); + await Page.refresh(); }) //------------------------------------------------------------------------------------------------------------------ @@ -36,7 +37,6 @@ describe(Page.groupId(params), async () => { it(Page.testId(params), async () => { inputs = Data.groups[0].tests[1]; - console.log(color.green('params.test'), inputs); await Page.open() await Page.submitAndAssert( inputs.email, @@ -86,9 +86,13 @@ describe(Page.groupId(params), async () => { it(Page.testId(params), async () => { inputs = Data.groups[0].tests[4]; await Page.open() - await Page.h3_assertion( - inputs.assert - ) + await Page.submitAndAssert( + inputs.email, + inputs.password, + Data, + inputs.assert.error_msg, + inputs.assert.signInPageTitle + ); await Page.refresh(); }) @@ -98,9 +102,13 @@ describe(Page.groupId(params), async () => { it(Page.testId(params), async () => { inputs = Data.groups[0].tests[5]; await Page.open() - await Page.forgotPassword( - inputs.assert - ) + await Page.submitAndAssert( + inputs.email, + inputs.password, + Data, + inputs.assert.error_msg, + inputs.assert.signInPageTitle + ); await Page.refresh(); }) @@ -110,10 +118,13 @@ describe(Page.groupId(params), async () => { it(Page.testId(params), async () => { inputs = Data.groups[0].tests[6]; await Page.open() - await Page.fillAndRemoveEmail( + await Page.submitAndAssert( inputs.email, - Data - ) + inputs.password, + Data, + inputs.assert.error_msg, + inputs.assert.signInPageTitle + ); await Page.refresh(); }) @@ -123,10 +134,13 @@ describe(Page.groupId(params), async () => { it(Page.testId(params), async () => { inputs = Data.groups[0].tests[7]; await Page.open() - await Page.fillAndRemovePassword( + await Page.submitAndAssert( + inputs.email, inputs.password, - Data - ) + Data, + inputs.assert.error_msg, + inputs.assert.signInPageTitle + ); await Page.refresh(); }) @@ -152,11 +166,11 @@ describe(Page.groupId(params), async () => { it(Page.testId(params), async () => { inputs = Data.groups[0].tests[9]; await Page.open() - await Page.submitAndAssert( + await Page.signInAndBrowseBack( inputs.email, inputs.password, Data, - inputs.assert.error_msg, + inputs.assert.homePageTitle, inputs.assert.signInPageTitle ); await Page.refresh(); @@ -168,123 +182,115 @@ describe(Page.groupId(params), async () => { it(Page.testId(params), async () => { inputs = Data.groups[0].tests[10]; await Page.open() - await Page.submitAndAssert( + await Page.signOutAndBrowseBack( inputs.email, inputs.password, Data, - inputs.assert.error_msg, + inputs.assert.homePageTitle, inputs.assert.signInPageTitle ); await Page.refresh(); }) //------------------------------------------------------------------------------------------------------------------ - params.test = Data.groups[0].tests[11]; + params.group = Data.groups[1]; + params.test = Data.groups[1].tests[0]; + console.log(color.red('params.test'), params.test); it(Page.testId(params), async () => { - inputs = Data.groups[0].tests[11]; + inputs = Data.groups[1].tests[0]; await Page.open() - await Page.submitAndAssert( - inputs.email, - inputs.password, - Data, - inputs.assert.error_msg, - inputs.assert.signInPageTitle - ); + await Page.h3_assertion( + inputs.assert + ) await Page.refresh(); }) //------------------------------------------------------------------------------------------------------------------ - params.test = Data.groups[0].tests[12]; + + params.test = Data.groups[1].tests[1]; it(Page.testId(params), async () => { - inputs = Data.groups[0].tests[12]; + inputs = Data.groups[1].tests[1]; await Page.open() - await Page.submitAndAssert( - inputs.email, - inputs.password, - Data, - inputs.assert.error_msg, - inputs.assert.signInPageTitle - ); + await Page.p_assertion( + inputs.assert + ) await Page.refresh(); }) //------------------------------------------------------------------------------------------------------------------ - params.test = Data.groups[0].tests[13]; + params.group = Data.groups[2]; + params.test = Data.groups[2].tests[0]; + console.log(color.red('params.test'), params.test); it(Page.testId(params), async () => { - inputs = Data.groups[0].tests[13]; + inputs = Data.groups[2].tests[0]; await Page.open() - await Page.eyeButton( - inputs.password, - Data, - inputs.assert_signInPageTitle - ); + await Page.forgotPassword( + inputs.assert + ) await Page.refresh(); }) //------------------------------------------------------------------------------------------------------------------ - params.test = Data.groups[0].tests[14]; + params.test = Data.groups[2].tests[1]; it(Page.testId(params), async () => { - inputs = Data.groups[0].tests[14]; + inputs = Data.groups[2].tests[1]; await Page.open() - await Page.submitFunctionality( - Data, - inputs.assert.submitButton_labelledText, - inputs.assert.signInPageTitle - ); + await Page.fillAndRemoveEmail( + inputs.email, + Data + ) await Page.refresh(); }) //------------------------------------------------------------------------------------------------------------------ - params.test = Data.groups[0].tests[15]; + params.test = Data.groups[2].tests[2]; it(Page.testId(params), async () => { - inputs = Data.groups[0].tests[15]; + inputs = Data.groups[2].tests[2]; await Page.open() - await Page.signInAndBrowseBack( - inputs.email, + await Page.fillAndRemovePassword( inputs.password, - Data, - inputs.assert.homePageTitle, - inputs.assert.signInPageTitle - ); + Data + ) await Page.refresh(); }) + //------------------------------------------------------------------------------------------------------------------ - params.test = Data.groups[0].tests[16]; + params.test = Data.groups[2].tests[3]; it(Page.testId(params), async () => { - inputs = Data.groups[0].tests[16]; + inputs = Data.groups[2].tests[3]; await Page.open() - await Page.signOutAndBrowseBack( - inputs.email, + await Page.eyeButton( inputs.password, Data, - inputs.assert.homePageTitle, - inputs.assert.signInPageTitle + inputs.assert_signInPageTitle ); await Page.refresh(); }) //------------------------------------------------------------------------------------------------------------------ - - /*params.test = Data.groups[0].tests[17]; + params.test = Data.groups[2].tests[4]; it(Page.testId(params), async () => { + inputs = Data.groups[2].tests[4]; await Page.open() - await Page.signOutAndBrowseBack( - params.group.tests[16].email, - params.group.tests[16].password, + await Page.submitFunctionality( Data, - params.group.tests[16].assert + inputs.assert.submitButton_labelledText, + inputs.assert.signInPageTitle ); await Page.refresh(); - })*/ + }) + + //------------------------------------------------------------------------------------------------------------------ }) + From 42dedb1f8dd263843cfaa0af54ebc95a6ca93180 Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Wed, 9 Nov 2022 17:09:12 +0530 Subject: [PATCH 18/60] common test list for signin --- data/signin.js | 16 ++++++++-------- pageobjects/signin.page.js | 6 +++--- specs/signin.spec.js | 13 +++++++++++++ 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/data/signin.js b/data/signin.js index a8a7013..d55cbeb 100644 --- a/data/signin.js +++ b/data/signin.js @@ -22,7 +22,8 @@ class Signin{ menu_item: 'menuitem', logout_button: '=Logout', eye_icon: 'eye', - forgot_password: '=Forgot Password?' + forgot_password: '=Forgot Password?', + copyright: '=VaahCMS' } this.params.page = { id: "SL", @@ -177,13 +178,12 @@ class Signin{ expect: "Sub-Heading of the signin page should be correct", assert: "Please Sign In to continue" }, - /*{ - count: 1.2, - name: "Verify copyright text and symbol", - expect: "Copyright text and symbol should be present under the footer section. of the signIn page.", - - assert_copyrightText: "© 2022." - }*/ + { + count: 1.3, + name: "Verify linksin footer section", + expect: "Links should be present under the footer section. of the signIn page.", + assert: "VaahCMS" + } ] }, diff --git a/pageobjects/signin.page.js b/pageobjects/signin.page.js index a07e2db..5feaa6e 100644 --- a/pageobjects/signin.page.js +++ b/pageobjects/signin.page.js @@ -183,12 +183,12 @@ class SigninPage extends Page { //--------------------------------------------------------- - /*async copyRight(assert) + async linkText(assert) { //await this.h3_assertion(assertsignin); - await expect(Sl.$(Data.selectors.p)).toHaveTextContaining(assert); + await expect(Sl.$(Data.selectors.copyright)).toHaveTextContaining(assert); - }*/ + } } module.exports = new SigninPage(); diff --git a/specs/signin.spec.js b/specs/signin.spec.js index b389f23..6ac52de 100644 --- a/specs/signin.spec.js +++ b/specs/signin.spec.js @@ -219,6 +219,19 @@ describe(Page.groupId(params), async () => { await Page.refresh(); }) + //------------------------------------------------------------------------------------------------------------------ + + params.test = Data.groups[1].tests[2]; + + it(Page.testId(params), async () => { + inputs = Data.groups[1].tests[2]; + await Page.open() + await Page.linkText( + inputs.assert + ) + await Page.refresh(); + }) + //------------------------------------------------------------------------------------------------------------------ params.group = Data.groups[2]; params.test = Data.groups[2].tests[0]; From f190507da9da86a984db093466fb7d31b496fae0 Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Wed, 9 Nov 2022 17:27:01 +0530 Subject: [PATCH 19/60] updated: Test scripts --- data/signin.js | 2 +- pageobjects/signin.page.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/data/signin.js b/data/signin.js index d55cbeb..03d2696 100644 --- a/data/signin.js +++ b/data/signin.js @@ -23,7 +23,7 @@ class Signin{ logout_button: '=Logout', eye_icon: 'eye', forgot_password: '=Forgot Password?', - copyright: '=VaahCMS' + linkText: '=VaahCMS' } this.params.page = { id: "SL", diff --git a/pageobjects/signin.page.js b/pageobjects/signin.page.js index 5feaa6e..bda44dd 100644 --- a/pageobjects/signin.page.js +++ b/pageobjects/signin.page.js @@ -186,7 +186,7 @@ class SigninPage extends Page { async linkText(assert) { //await this.h3_assertion(assertsignin); - await expect(Sl.$(Data.selectors.copyright)).toHaveTextContaining(assert); + await expect(Sl.$(Data.selectors.linkText)).toHaveTextContaining(assert); } } From 469063789e73d39c8ec767149cf644fdff0f65f6 Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Thu, 10 Nov 2022 13:40:13 +0530 Subject: [PATCH 20/60] Sign In: Test Scripts(updated) --- data/signin.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/signin.js b/data/signin.js index 03d2696..6465ba3 100644 --- a/data/signin.js +++ b/data/signin.js @@ -180,7 +180,7 @@ class Signin{ }, { count: 1.3, - name: "Verify linksin footer section", + name: "Verify links in footer section", expect: "Links should be present under the footer section. of the signIn page.", assert: "VaahCMS" } From e1ab7fe48ce17959a9e020e5d77a427d5003971e Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Thu, 10 Nov 2022 15:05:18 +0530 Subject: [PATCH 21/60] updated --- data/signin.js | 13 ++++++------- pageobjects/signin.page.js | 7 +++---- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/data/signin.js b/data/signin.js index 6465ba3..1a2090f 100644 --- a/data/signin.js +++ b/data/signin.js @@ -1,7 +1,5 @@ class Signin{ - - constructor() { this.selector_type = 'dusk'; @@ -11,13 +9,14 @@ class Signin{ name: null, } } + this.selectors = { email: 'signin-email_or_username', password: 'signin-password', submit: 'signin-signin', - h3: 'h3', - h2: 'h2', - p: 'p', + login_page_heading: 'h3', + home_page_heading: 'h2', + login_page_subheading: 'p', alert_box: 'alertdialog', menu_item: 'menuitem', logout_button: '=Logout', @@ -25,10 +24,10 @@ class Signin{ forgot_password: '=Forgot Password?', linkText: '=VaahCMS' } + this.params.page = { id: "SL", name: "Sign In", - path: "/solutions", url: '/' } @@ -189,7 +188,7 @@ class Signin{ }, { count: 3, - name: "functionality", + name: "Functionality", tests: [ { count: 1.1, diff --git a/pageobjects/signin.page.js b/pageobjects/signin.page.js index bda44dd..3e6fd29 100644 --- a/pageobjects/signin.page.js +++ b/pageobjects/signin.page.js @@ -39,21 +39,21 @@ class SigninPage extends Page { async h3_assertion(assert) { - await expect(Sl.$(Data.selectors.h3)).toHaveTextContaining(assert); + await expect(Sl.$(Data.selectors.login_page_heading)).toHaveTextContaining(assert); } //--------------------------------------------------------- async p_assertion(assert) { - await expect(Sl.$(Data.selectors.p)).toHaveTextContaining(assert); + await expect(Sl.$(Data.selectors.login_page_subheading)).toHaveTextContaining(assert); } //--------------------------------------------------------- async h2_assertion(assert) { - await expect(Sl.$(Data.selectors.h2)).toHaveTextContaining(assert); + await expect(Sl.$(Data.selectors.home_page_heading)).toHaveTextContaining(assert); } @@ -185,7 +185,6 @@ class SigninPage extends Page { async linkText(assert) { - //await this.h3_assertion(assertsignin); await expect(Sl.$(Data.selectors.linkText)).toHaveTextContaining(assert); } From 97f70276f93fdcf73ab0c621b7d02ea7c04724bc Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Thu, 10 Nov 2022 15:44:21 +0530 Subject: [PATCH 22/60] updated --- data/signin.js | 25 ++++++++++++------------- pageobjects/signin.page.js | 27 +++++++++++++-------------- specs/signin.spec.js | 4 ++-- 3 files changed, 27 insertions(+), 29 deletions(-) diff --git a/data/signin.js b/data/signin.js index 1a2090f..85dd025 100644 --- a/data/signin.js +++ b/data/signin.js @@ -40,7 +40,6 @@ class Signin{ count: 1.1, name: "Invalid Credentials", expect: "User should not be able to signin and an error message should be displayed", - title: "Validate with invalid credentials", email: "sanu@gmail.com", password: "12345", assert: { @@ -83,7 +82,7 @@ class Signin{ }, { count: 1.5, - name: "Verify user is able to signin using alphabetic characters in emailtextfield", + name: "Verify user is able to signin using alphabetic characters in email text-field", expect: "User should not be able to signin and an error message should be displayed", email: "satyajeetsinghsanu", password: "12345", @@ -94,7 +93,7 @@ class Signin{ }, { count: 1.6, - name: "Verify user is able to signin using numeric characters in emailtextfield", + name: "Verify user is able to signin using numeric characters in email text-field", expect: "User should not be able to signin and an error message should be displayed", email: "123456789", password: "12345", @@ -105,7 +104,7 @@ class Signin{ }, { count: 1.7, - name: "Verify user is able to signin with blank emailtextfield", + name: "Verify user is able to signin with blank email text-field", expect: "User should not be able to signin and an error message should be displayed", email: "", password: "admin@vaahcms", @@ -116,7 +115,7 @@ class Signin{ }, { count: 1.8, - name: "Verify user is able to signin with blank passwordtextfield", + name: "Verify user is able to signin with blank password text-field", expect: "User should not be able to signin and an error message should be displayed", email: "we@webreinvent.com", password: "", @@ -127,7 +126,7 @@ class Signin{ }, { count: 1.9, - name: "Verify user is able to signin with both email and password textfields blank", + name: "Verify user is able to signin with both email and password text-fields blank", expect: "User should not be able to signin and an error message should be displayed", email: "", password: "", @@ -151,7 +150,7 @@ class Signin{ { count: 2.2, name: "Verify logging out from the application and browsing back ", - expect: " User should not get logged in again..", + expect: " User should not get logged in again.", email: "we@webreinvent.com", password: "admin@vaahcms", assert: { @@ -167,13 +166,13 @@ class Signin{ tests: [ { count: 1.1, - name: "Verfiy Heading of the SignIn Page", + name: "Verify Heading of the SignIn Page", expect: "Heading of the signin page should be correct", assert: "Sign In" }, { count: 1.2, - name: "Verfiy Sub-Heading of the SignIn Page", + name: "Verify Sub-Heading of the SignIn Page", expect: "Sub-Heading of the signin page should be correct", assert: "Please Sign In to continue" }, @@ -198,14 +197,14 @@ class Signin{ }, { count: 1.2, - name: "Verify user is able to remove text from email textfield", - expect: "User should be able to remove text from email textfield", + name: "Verify user is able to remove text from email text-field", + expect: "User should be able to remove text from email text-field", email: "we@webreinvent.com", }, { count: 1.3, - name: "Verify user is able to remove text from password textfield", - expect: "User should be able to remove text from password textfield", + name: "Verify user is able to remove text from password text-field", + expect: "User should be able to remove text from password text-field", password: "admin@vaahcms" }, diff --git a/pageobjects/signin.page.js b/pageobjects/signin.page.js index 3e6fd29..4ef286e 100644 --- a/pageobjects/signin.page.js +++ b/pageobjects/signin.page.js @@ -13,7 +13,6 @@ class SigninPage extends Page { super(); this.params.page.id = "SI"; this.params.page.name = "Sign-In"; - //this.params.page.path = ""; this.params.page.url = this.base_url; } @@ -37,21 +36,21 @@ class SigninPage extends Page { //--------------------------------------------------------- - async h3_assertion(assert) + async heading(assert) { await expect(Sl.$(Data.selectors.login_page_heading)).toHaveTextContaining(assert); } //--------------------------------------------------------- - async p_assertion(assert) + async subheading(assert) { await expect(Sl.$(Data.selectors.login_page_subheading)).toHaveTextContaining(assert); } //--------------------------------------------------------- - async h2_assertion(assert) + async homePageHeading(assert) { await expect(Sl.$(Data.selectors.home_page_heading)).toHaveTextContaining(assert); } @@ -89,7 +88,7 @@ class SigninPage extends Page { async submitFunctionality(data,assert,assertsignin) { await expect(Sl.dynamic(data.selectors.submit, data.selector_type)).toHaveTextContaining(assert); - await this.h3_assertion(assertsignin); + await this.heading(assertsignin); } //--------------------------------------------------------- @@ -114,7 +113,7 @@ class SigninPage extends Page { { await this.fillAndSubmit(email, password, data) await expect(Sl.role(Data.selectors.alert_box)).toHaveTextContaining(assert); - await this.h3_assertion(assertsignin); + await this.heading(assertsignin); } //--------------------------------------------------------- @@ -130,9 +129,9 @@ class SigninPage extends Page { async submitAndLogout(email, password, data, assert,assertsignin) { await this.fillAndSubmit(email, password, data) - await this.h2_assertion(assert) + await this.homePageHeading(assert) await this.moveAndLogout(data); - await this.h3_assertion(assertsignin); + await this.heading(assertsignin); } //--------------------------------------------------------- @@ -142,10 +141,10 @@ class SigninPage extends Page { await this.fillAndSubmit(email, password, data) await browser.pause(2000); await browser.back(); - await this.h3_assertion(assertsignin); + await this.heading(assertsignin); await browser.pause(2000); await browser.forward(); - await this.h2_assertion(assert); + await this.homePageHeading(assert); await this.moveAndLogout(data); } @@ -155,9 +154,9 @@ class SigninPage extends Page { async signOutAndBrowseBack(email, password, data,assert,assertsignin) { await this.fillAndSubmit(email, password, data) - await this.h2_assertion(assert) + await this.homePageHeading(assert) await this.moveAndLogout(data); - await this.h3_assertion(assertsignin); + await this.heading(assertsignin); await browser.pause(2000); await browser.back(); @@ -168,7 +167,7 @@ class SigninPage extends Page { async forgotPassword(assert) { await Sl.$(Data.selectors.forgot_password).click(); - await this.h3_assertion(assert); + await this.heading(assert); } //--------------------------------------------------------- @@ -178,7 +177,7 @@ class SigninPage extends Page { await Sl.dynamic(data.selectors.password, data.selector_type).setValue(password); await browser.pause(2000); await Sl.icon(Data.selectors.eye_icon).click(); - await this.h3_assertion(assert); + await this.heading(assert); } //--------------------------------------------------------- diff --git a/specs/signin.spec.js b/specs/signin.spec.js index 6ac52de..5ebc2fa 100644 --- a/specs/signin.spec.js +++ b/specs/signin.spec.js @@ -200,7 +200,7 @@ describe(Page.groupId(params), async () => { it(Page.testId(params), async () => { inputs = Data.groups[1].tests[0]; await Page.open() - await Page.h3_assertion( + await Page.heading( inputs.assert ) await Page.refresh(); @@ -213,7 +213,7 @@ describe(Page.groupId(params), async () => { it(Page.testId(params), async () => { inputs = Data.groups[1].tests[1]; await Page.open() - await Page.p_assertion( + await Page.subheading( inputs.assert ) await Page.refresh(); From 29d3805c4772066fceebbbbb307a45a904f7f80d Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Thu, 10 Nov 2022 15:49:09 +0530 Subject: [PATCH 23/60] updated --- data/signin.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/signin.js b/data/signin.js index 85dd025..1ceec0a 100644 --- a/data/signin.js +++ b/data/signin.js @@ -178,8 +178,8 @@ class Signin{ }, { count: 1.3, - name: "Verify links in footer section", - expect: "Links should be present under the footer section. of the signIn page.", + name: "Verify VaahCMS link in footer section", + expect: "VaahCMS link should be present under the footer section. of the signIn page.", assert: "VaahCMS" } From 6b61044b7dd7922e2fae06df71f85755be92cbd0 Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Thu, 10 Nov 2022 16:35:06 +0530 Subject: [PATCH 24/60] updated signin test scripts --- data/signin.js | 4 +++- pageobjects/signin.page.js | 11 ++++++++--- specs/signin.spec.js | 6 ++++-- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/data/signin.js b/data/signin.js index 1ceec0a..68b2b82 100644 --- a/data/signin.js +++ b/data/signin.js @@ -200,12 +200,14 @@ class Signin{ name: "Verify user is able to remove text from email text-field", expect: "User should be able to remove text from email text-field", email: "we@webreinvent.com", + assert: "" }, { count: 1.3, name: "Verify user is able to remove text from password text-field", expect: "User should be able to remove text from password text-field", - password: "admin@vaahcms" + password: "admin@vaahcms", + assert: "" }, { diff --git a/pageobjects/signin.page.js b/pageobjects/signin.page.js index 4ef286e..0c5b164 100644 --- a/pageobjects/signin.page.js +++ b/pageobjects/signin.page.js @@ -66,21 +66,26 @@ class SigninPage extends Page { //--------------------------------------------------------- - async fillAndRemoveEmail(email,data) + async fillAndRemoveEmail(email,data,assert) { const emailTextField = await Sl.dynamic(data.selectors.email, data.selector_type); emailTextField.setValue(email); - await browser.pause(2000); + //const text = await emailTextField.getText(); + //await browser.pause(2000); emailTextField.clearValue(); + //const blank = await emailTextField.getText(); + await expect(emailTextField).toHaveTextContaining(assert); + } //--------------------------------------------------------- - async fillAndRemovePassword(password,data) { + async fillAndRemovePassword(password,data,assert) { const passwordTextField = await Sl.dynamic(data.selectors.password, data.selector_type); passwordTextField.setValue(password); await browser.pause(2000); passwordTextField.clearValue(); + await expect(passwordTextField).toHaveTextContaining(assert); } //--------------------------------------------------------- diff --git a/specs/signin.spec.js b/specs/signin.spec.js index 5ebc2fa..531c2d8 100644 --- a/specs/signin.spec.js +++ b/specs/signin.spec.js @@ -254,7 +254,8 @@ describe(Page.groupId(params), async () => { await Page.open() await Page.fillAndRemoveEmail( inputs.email, - Data + Data, + inputs.assert ) await Page.refresh(); }) @@ -267,7 +268,8 @@ describe(Page.groupId(params), async () => { await Page.open() await Page.fillAndRemovePassword( inputs.password, - Data + Data, + inputs.assert ) await Page.refresh(); }) From 53ee09da6280d8679866120e214becad5480382a Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Thu, 10 Nov 2022 17:47:59 +0530 Subject: [PATCH 25/60] Test scripts update: signin --- data/signin.js | 15 ++++++++++++--- pageobjects/signin.page.js | 26 +++++++++++++------------- specs/signin.spec.js | 9 ++++++--- 3 files changed, 31 insertions(+), 19 deletions(-) diff --git a/data/signin.js b/data/signin.js index 68b2b82..cb4edf6 100644 --- a/data/signin.js +++ b/data/signin.js @@ -200,14 +200,20 @@ class Signin{ name: "Verify user is able to remove text from email text-field", expect: "User should be able to remove text from email text-field", email: "we@webreinvent.com", - assert: "" + assert: { + text_value: "we@webreinvent.com", + blank_value: "" + } }, { count: 1.3, name: "Verify user is able to remove text from password text-field", expect: "User should be able to remove text from password text-field", password: "admin@vaahcms", - assert: "" + assert: { + text_value: "admin@vaahcms", + blank_value: "" + } }, { @@ -216,7 +222,10 @@ class Signin{ expect: "Password should be shown when user click on the eye icon.", email: "", password: "1323456", - assert_signInPageTitle: "Sign In" + assert: { + password_value: "1323456", + signInPageTitle: "Sign In" + } }, { count: 1.5, diff --git a/pageobjects/signin.page.js b/pageobjects/signin.page.js index 0c5b164..0ebab3f 100644 --- a/pageobjects/signin.page.js +++ b/pageobjects/signin.page.js @@ -66,26 +66,24 @@ class SigninPage extends Page { //--------------------------------------------------------- - async fillAndRemoveEmail(email,data,assert) + async fillAndRemoveEmail(email,data,assertvalue,assert) { const emailTextField = await Sl.dynamic(data.selectors.email, data.selector_type); emailTextField.setValue(email); - //const text = await emailTextField.getText(); - //await browser.pause(2000); + await expect(emailTextField).toHaveValueContaining(assertvalue); emailTextField.clearValue(); - //const blank = await emailTextField.getText(); - await expect(emailTextField).toHaveTextContaining(assert); + await expect(emailTextField).toHaveValueContaining(assert); } //--------------------------------------------------------- - async fillAndRemovePassword(password,data,assert) { + async fillAndRemovePassword(password,data,assertvalue,assert) { const passwordTextField = await Sl.dynamic(data.selectors.password, data.selector_type); passwordTextField.setValue(password); - await browser.pause(2000); + await expect(passwordTextField).toHaveValueContaining(assertvalue); passwordTextField.clearValue(); - await expect(passwordTextField).toHaveTextContaining(assert); + await expect(passwordTextField).toHaveValueContaining(assert); } //--------------------------------------------------------- @@ -162,7 +160,6 @@ class SigninPage extends Page { await this.homePageHeading(assert) await this.moveAndLogout(data); await this.heading(assertsignin); - await browser.pause(2000); await browser.back(); } @@ -177,12 +174,15 @@ class SigninPage extends Page { //--------------------------------------------------------- - async eyeButton(password,data,assert) + async eyeButton(password,data,assertsignin,assert) { - await Sl.dynamic(data.selectors.password, data.selector_type).setValue(password); - await browser.pause(2000); + const passwordTextField = await Sl.dynamic(data.selectors.password, data.selector_type); + passwordTextField.setValue(password); + await this.heading(assertsignin); await Sl.icon(Data.selectors.eye_icon).click(); - await this.heading(assert); + await browser.pause(2000); + await expect(passwordTextField).toHaveValueContaining(assert) + } //--------------------------------------------------------- diff --git a/specs/signin.spec.js b/specs/signin.spec.js index 531c2d8..1dc1423 100644 --- a/specs/signin.spec.js +++ b/specs/signin.spec.js @@ -255,7 +255,8 @@ describe(Page.groupId(params), async () => { await Page.fillAndRemoveEmail( inputs.email, Data, - inputs.assert + inputs.assert.text_value, + inputs.assert.blank_value ) await Page.refresh(); }) @@ -269,7 +270,8 @@ describe(Page.groupId(params), async () => { await Page.fillAndRemovePassword( inputs.password, Data, - inputs.assert + inputs.assert.text_value, + inputs.assert.blank_value ) await Page.refresh(); }) @@ -284,7 +286,8 @@ describe(Page.groupId(params), async () => { await Page.eyeButton( inputs.password, Data, - inputs.assert_signInPageTitle + inputs.assert.signInPageTitle, + inputs.assert.password_value ); await Page.refresh(); }) From c0ba796b848eb827ff508ca4fb0a5ee51218d806 Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Thu, 10 Nov 2022 18:05:01 +0530 Subject: [PATCH 26/60] Sign In : Test Scripts updated --- data/signin.js | 40 +++++++++++++++++++------------------- pageobjects/signin.page.js | 8 +++----- specs/signin.spec.js | 34 ++++++++++++++++---------------- 3 files changed, 40 insertions(+), 42 deletions(-) diff --git a/data/signin.js b/data/signin.js index cb4edf6..3a087ee 100644 --- a/data/signin.js +++ b/data/signin.js @@ -14,15 +14,15 @@ class Signin{ email: 'signin-email_or_username', password: 'signin-password', submit: 'signin-signin', - login_page_heading: 'h3', + page_heading: 'h3', home_page_heading: 'h2', - login_page_subheading: 'p', + page_subheading: 'p', alert_box: 'alertdialog', menu_item: 'menuitem', logout_button: '=Logout', eye_icon: 'eye', forgot_password: '=Forgot Password?', - linkText: '=VaahCMS' + link_text: '=VaahCMS' } this.params.page = { @@ -44,7 +44,7 @@ class Signin{ password: "12345", assert: { error_msg: "No user exist", - signInPageTitle: "Sign In", + sign_in_page_title: "Sign In", } }, { @@ -55,7 +55,7 @@ class Signin{ password: "admin@vaahcms", assert: { error_msg: "No user exist", - signInPageTitle: "Sign In", + sign_in_page_title: "Sign In", } }, { @@ -66,7 +66,7 @@ class Signin{ password: "123456", assert: { error_msg: "Invalid credentials", - signInPageTitle: "Sign In" + sign_in_page_title: "Sign In" } }, { @@ -76,8 +76,8 @@ class Signin{ email: "we@webreinvent.com", password: "admin@vaahcms", assert: { - homePageTitle: ["Welcome to Vaah" , "cms"], - signInPageTitle: "Sign In" + home_page_title: ["Welcome to Vaah" , "cms"], + sign_in_page_title: "Sign In" } }, { @@ -88,7 +88,7 @@ class Signin{ password: "12345", assert: { error_msg: "No user exist", - signInPageTitle: "Sign In" + sign_in_page_title: "Sign In" } }, { @@ -99,7 +99,7 @@ class Signin{ password: "12345", assert: { error_msg: "No user exist", - signInPageTitle: "Sign In" + sign_in_page_title: "Sign In" } }, { @@ -110,7 +110,7 @@ class Signin{ password: "admin@vaahcms", assert: { error_msg: "The email or username field is required.", - signInPageTitle: "Sign In" + sign_in_page_title: "Sign In" } }, { @@ -121,7 +121,7 @@ class Signin{ password: "", assert: { error_msg: "Invalid credentials", - signInPageTitle: "Sign In" + sign_in_page_title: "Sign In" } }, { @@ -132,7 +132,7 @@ class Signin{ password: "", assert: { error_msg: "The email or username field is required.", - signInPageTitle: "Sign In" + sign_in_page_title: "Sign In" } }, { @@ -142,8 +142,8 @@ class Signin{ email: "we@webreinvent.com", password: "admin@vaahcms", assert: { - homePageTitle: ["Welcome to Vaah", "cms"], - signInPageTitle: "Sign In" + home_page_title: ["Welcome to Vaah", "cms"], + sign_in_page_title: "Sign In" } }, @@ -154,8 +154,8 @@ class Signin{ email: "we@webreinvent.com", password: "admin@vaahcms", assert: { - homePageTitle: ["Welcome to Vaah", "cms"], - signInPageTitle: "Sign In", + home_page_title: ["Welcome to Vaah", "cms"], + sign_in_page_title: "Sign In", } }, ] @@ -224,7 +224,7 @@ class Signin{ password: "1323456", assert: { password_value: "1323456", - signInPageTitle: "Sign In" + sign_in_page_title: "Sign In" } }, { @@ -232,8 +232,8 @@ class Signin{ name: "Verify that the labelled text present in Submit button is properly displayed", expect: "Labelled text should be properly displayed.", assert: { - submitButton_labelledText: "Sign In", - signInPageTitle: "Sign In" + submit_button_labelled_text: "Sign In", + sign_in_page_title: "Sign In" } } ] diff --git a/pageobjects/signin.page.js b/pageobjects/signin.page.js index 0ebab3f..62b24f3 100644 --- a/pageobjects/signin.page.js +++ b/pageobjects/signin.page.js @@ -1,8 +1,6 @@ const Page = require('./../Page'); const Sl = require('./../Selector'); const Data = require("../data/signin"); -const assert = require("assert"); -const getText = require("webdriverio/build/commands/element/getText"); /** * sub page containing specific selectors and methods for a specific page @@ -38,14 +36,14 @@ class SigninPage extends Page { async heading(assert) { - await expect(Sl.$(Data.selectors.login_page_heading)).toHaveTextContaining(assert); + await expect(Sl.$(Data.selectors.page_heading)).toHaveTextContaining(assert); } //--------------------------------------------------------- async subheading(assert) { - await expect(Sl.$(Data.selectors.login_page_subheading)).toHaveTextContaining(assert); + await expect(Sl.$(Data.selectors.page_subheading)).toHaveTextContaining(assert); } //--------------------------------------------------------- @@ -189,7 +187,7 @@ class SigninPage extends Page { async linkText(assert) { - await expect(Sl.$(Data.selectors.linkText)).toHaveTextContaining(assert); + await expect(Sl.$(Data.selectors.link_text)).toHaveTextContaining(assert); } } diff --git a/specs/signin.spec.js b/specs/signin.spec.js index 1dc1423..df1edef 100644 --- a/specs/signin.spec.js +++ b/specs/signin.spec.js @@ -22,7 +22,7 @@ describe(Page.groupId(params), async () => { inputs.password, Data, inputs.assert.error_msg, - inputs.assert.signInPageTitle + inputs.assert.sign_in_page_title /*Data.groups[0].tests[0].email, params.group.tests[0].password, Data, @@ -43,7 +43,7 @@ describe(Page.groupId(params), async () => { inputs.password, Data, inputs.assert.error_msg, - inputs.assert.signInPageTitle + inputs.assert.sign_in_page_title ); await Page.refresh(); }) @@ -59,7 +59,7 @@ describe(Page.groupId(params), async () => { inputs.password, Data, inputs.assert.error_msg, - inputs.assert.signInPageTitle + inputs.assert.sign_in_page_title ); await Page.refresh(); }) @@ -74,8 +74,8 @@ describe(Page.groupId(params), async () => { inputs.email, inputs.password, Data, - inputs.assert.homePageTitle, - inputs.assert.signInPageTitle + inputs.assert.home_page_title, + inputs.assert.sign_in_page_title ); await Page.refresh(); }) @@ -91,7 +91,7 @@ describe(Page.groupId(params), async () => { inputs.password, Data, inputs.assert.error_msg, - inputs.assert.signInPageTitle + inputs.assert.sign_in_page_title ); await Page.refresh(); }) @@ -107,7 +107,7 @@ describe(Page.groupId(params), async () => { inputs.password, Data, inputs.assert.error_msg, - inputs.assert.signInPageTitle + inputs.assert.sign_in_page_title ); await Page.refresh(); }) @@ -123,7 +123,7 @@ describe(Page.groupId(params), async () => { inputs.password, Data, inputs.assert.error_msg, - inputs.assert.signInPageTitle + inputs.assert.sign_in_page_title ); await Page.refresh(); }) @@ -139,7 +139,7 @@ describe(Page.groupId(params), async () => { inputs.password, Data, inputs.assert.error_msg, - inputs.assert.signInPageTitle + inputs.assert.sign_in_page_title ); await Page.refresh(); }) @@ -155,7 +155,7 @@ describe(Page.groupId(params), async () => { inputs.password, Data, inputs.assert.error_msg, - inputs.assert.signInPageTitle + inputs.assert.sign_in_page_title ); await Page.refresh(); }) @@ -170,8 +170,8 @@ describe(Page.groupId(params), async () => { inputs.email, inputs.password, Data, - inputs.assert.homePageTitle, - inputs.assert.signInPageTitle + inputs.assert.home_page_title, + inputs.assert.sign_in_page_title ); await Page.refresh(); }) @@ -186,8 +186,8 @@ describe(Page.groupId(params), async () => { inputs.email, inputs.password, Data, - inputs.assert.homePageTitle, - inputs.assert.signInPageTitle + inputs.assert.home_page_title, + inputs.assert.sign_in_page_title ); await Page.refresh(); }) @@ -286,7 +286,7 @@ describe(Page.groupId(params), async () => { await Page.eyeButton( inputs.password, Data, - inputs.assert.signInPageTitle, + inputs.assert.sign_in_page_title, inputs.assert.password_value ); await Page.refresh(); @@ -300,8 +300,8 @@ describe(Page.groupId(params), async () => { await Page.open() await Page.submitFunctionality( Data, - inputs.assert.submitButton_labelledText, - inputs.assert.signInPageTitle + inputs.assert.submit_button_labelled_text, + inputs.assert.sign_in_page_title ); await Page.refresh(); }) From 30d4d4acf733a97c5d26337f0864141f0d4fec9a Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Thu, 10 Nov 2022 18:36:28 +0530 Subject: [PATCH 27/60] Sign In: Test Scripts Updated --- pageobjects/signin.page.js | 1 + 1 file changed, 1 insertion(+) diff --git a/pageobjects/signin.page.js b/pageobjects/signin.page.js index 62b24f3..d1848e8 100644 --- a/pageobjects/signin.page.js +++ b/pageobjects/signin.page.js @@ -176,6 +176,7 @@ class SigninPage extends Page { { const passwordTextField = await Sl.dynamic(data.selectors.password, data.selector_type); passwordTextField.setValue(password); + await browser.pause(2000); await this.heading(assertsignin); await Sl.icon(Data.selectors.eye_icon).click(); await browser.pause(2000); From d8ad68e19179578146a14073bc435f20cc70e2be Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Thu, 10 Nov 2022 18:56:09 +0530 Subject: [PATCH 28/60] UPDATED --- data/signin.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/signin.js b/data/signin.js index 3a087ee..cb50a72 100644 --- a/data/signin.js +++ b/data/signin.js @@ -26,7 +26,7 @@ class Signin{ } this.params.page = { - id: "SL", + id: "SI", name: "Sign In", url: '/' } From 9697b307a6e0d35cdebc2c00fa1b662cab4d6725 Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Thu, 10 Nov 2022 19:15:40 +0530 Subject: [PATCH 29/60] Updated: Sign In --- data/signin.js | 14 +++++--------- pageobjects/signin.page.js | 9 +++------ specs/signin.spec.js | 6 ++---- 3 files changed, 10 insertions(+), 19 deletions(-) diff --git a/data/signin.js b/data/signin.js index cb50a72..f34b63f 100644 --- a/data/signin.js +++ b/data/signin.js @@ -15,7 +15,7 @@ class Signin{ password: 'signin-password', submit: 'signin-signin', page_heading: 'h3', - home_page_heading: 'h2', + heading: 'h2', page_subheading: 'p', alert_box: 'alertdialog', menu_item: 'menuitem', @@ -222,19 +222,15 @@ class Signin{ expect: "Password should be shown when user click on the eye icon.", email: "", password: "1323456", - assert: { - password_value: "1323456", - sign_in_page_title: "Sign In" - } + assert: "1323456" }, + { count: 1.5, name: "Verify that the labelled text present in Submit button is properly displayed", expect: "Labelled text should be properly displayed.", - assert: { - submit_button_labelled_text: "Sign In", - sign_in_page_title: "Sign In" - } + assert: "Sign In" + } ] } diff --git a/pageobjects/signin.page.js b/pageobjects/signin.page.js index d1848e8..9a32dcf 100644 --- a/pageobjects/signin.page.js +++ b/pageobjects/signin.page.js @@ -50,7 +50,7 @@ class SigninPage extends Page { async homePageHeading(assert) { - await expect(Sl.$(Data.selectors.home_page_heading)).toHaveTextContaining(assert); + await expect(Sl.$(Data.selectors.heading)).toHaveTextContaining(assert); } @@ -86,10 +86,9 @@ class SigninPage extends Page { //--------------------------------------------------------- - async submitFunctionality(data,assert,assertsignin) + async submitFunctionality(data,assert) { await expect(Sl.dynamic(data.selectors.submit, data.selector_type)).toHaveTextContaining(assert); - await this.heading(assertsignin); } //--------------------------------------------------------- @@ -172,14 +171,12 @@ class SigninPage extends Page { //--------------------------------------------------------- - async eyeButton(password,data,assertsignin,assert) + async eyeButton(password,data,assert) { const passwordTextField = await Sl.dynamic(data.selectors.password, data.selector_type); passwordTextField.setValue(password); await browser.pause(2000); - await this.heading(assertsignin); await Sl.icon(Data.selectors.eye_icon).click(); - await browser.pause(2000); await expect(passwordTextField).toHaveValueContaining(assert) } diff --git a/specs/signin.spec.js b/specs/signin.spec.js index df1edef..070493e 100644 --- a/specs/signin.spec.js +++ b/specs/signin.spec.js @@ -286,8 +286,7 @@ describe(Page.groupId(params), async () => { await Page.eyeButton( inputs.password, Data, - inputs.assert.sign_in_page_title, - inputs.assert.password_value + inputs.assert ); await Page.refresh(); }) @@ -300,8 +299,7 @@ describe(Page.groupId(params), async () => { await Page.open() await Page.submitFunctionality( Data, - inputs.assert.submit_button_labelled_text, - inputs.assert.sign_in_page_title + inputs.assert ); await Page.refresh(); }) From 61a99279216da24e2c6cadbfcdd6a27325345a24 Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Fri, 11 Nov 2022 14:47:44 +0530 Subject: [PATCH 30/60] test scripts updated --- data/signin.js | 58 +++++++++++++++++++++++--------------- pageobjects/signin.page.js | 41 +++++++++++++-------------- specs/signin.spec.js | 34 ++++++++++------------ 3 files changed, 70 insertions(+), 63 deletions(-) diff --git a/data/signin.js b/data/signin.js index f34b63f..24ae308 100644 --- a/data/signin.js +++ b/data/signin.js @@ -47,9 +47,10 @@ class Signin{ sign_in_page_title: "Sign In", } }, + { count: 1.2, - name: "Invalid email and Valid Password", + name: "Invalid email or username and Valid Password", expect: "User should not be able to signin and an error message should be displayed", email: "satyajeet@gmail.com", password: "admin@vaahcms", @@ -58,9 +59,10 @@ class Signin{ sign_in_page_title: "Sign In", } }, + { count: 1.3, - name: "Valid email and Invalid Password", + name: "Valid email or username and Invalid Password", expect: "User should not be able to signin and an error message should be displayed", email: "we@webreinvent.com", password: "123456", @@ -69,42 +71,44 @@ class Signin{ sign_in_page_title: "Sign In" } }, + { count: 1.4, name: "Valid Credentials", - expect: "User should be able to signin and signout from the application successfully.", + expect: "User should be able to signin into the application successfully.", email: "we@webreinvent.com", password: "admin@vaahcms", - assert: { - home_page_title: ["Welcome to Vaah" , "cms"], - sign_in_page_title: "Sign In" - } + assert: ["Welcome to Vaah" , "cms"] + }, + { count: 1.5, - name: "Verify user is able to signin using alphabetic characters in email text-field", + name: "Verify user is able to signin using alphabetic characters in email or username text-field", expect: "User should not be able to signin and an error message should be displayed", email: "satyajeetsinghsanu", - password: "12345", + password: "admin@vaahcms", assert: { error_msg: "No user exist", sign_in_page_title: "Sign In" } }, + { count: 1.6, - name: "Verify user is able to signin using numeric characters in email text-field", + name: "Verify user is able to signin using numeric characters in email or username text-field", expect: "User should not be able to signin and an error message should be displayed", email: "123456789", - password: "12345", + password: "admin@vaahcms", assert: { error_msg: "No user exist", sign_in_page_title: "Sign In" } }, + { count: 1.7, - name: "Verify user is able to signin with blank email text-field", + name: "Verify user is able to signin with blank email or username text-field", expect: "User should not be able to signin and an error message should be displayed", email: "", password: "admin@vaahcms", @@ -113,6 +117,7 @@ class Signin{ sign_in_page_title: "Sign In" } }, + { count: 1.8, name: "Verify user is able to signin with blank password text-field", @@ -124,9 +129,10 @@ class Signin{ sign_in_page_title: "Sign In" } }, + { count: 1.9, - name: "Verify user is able to signin with both email and password text-fields blank", + name: "Verify user is able to signin with both email or username and password text-fields blank", expect: "User should not be able to signin and an error message should be displayed", email: "", password: "", @@ -135,6 +141,7 @@ class Signin{ sign_in_page_title: "Sign In" } }, + { count: 2.1, name: "Verify logging into the application and browsing back", @@ -147,6 +154,7 @@ class Signin{ } }, + { count: 2.2, name: "Verify logging out from the application and browsing back ", @@ -160,6 +168,7 @@ class Signin{ }, ] }, + { count: 2, name: "UI", @@ -167,34 +176,37 @@ class Signin{ { count: 1.1, name: "Verify Heading of the SignIn Page", - expect: "Heading of the signin page should be correct", + expect: "Heading of the signin page should be present.", assert: "Sign In" }, + { count: 1.2, name: "Verify Sub-Heading of the SignIn Page", - expect: "Sub-Heading of the signin page should be correct", + expect: "Sub-Heading of the signin page should be present.", assert: "Please Sign In to continue" }, + { count: 1.3, - name: "Verify VaahCMS link in footer section", - expect: "VaahCMS link should be present under the footer section. of the signIn page.", + name: "Verify VaahCMS link is present in footer section", + expect: "VaahCMS link should be present under the footer section of the signIn page.", assert: "VaahCMS" } - ] }, + { count: 3, name: "Functionality", tests: [ { count: 1.1, - name: "Verify forgot password link functionality", - expect: "User should be able to click on forgot password link and forgot password page should be displayed", + name: "Verify forgot password link functionality.", + expect: "User should be able to click on forgot password link and forgot password page should be displayed.", assert: "Forgot Password?" }, + { count: 1.2, name: "Verify user is able to remove text from email text-field", @@ -205,6 +217,7 @@ class Signin{ blank_value: "" } }, + { count: 1.3, name: "Verify user is able to remove text from password text-field", @@ -227,10 +240,9 @@ class Signin{ { count: 1.5, - name: "Verify that the labelled text present in Submit button is properly displayed", - expect: "Labelled text should be properly displayed.", + name: "Verify that the labelled text present in Sign In button.", + expect: "Labelled text should be present in Sign In button.", assert: "Sign In" - } ] } diff --git a/pageobjects/signin.page.js b/pageobjects/signin.page.js index 9a32dcf..6bde17d 100644 --- a/pageobjects/signin.page.js +++ b/pageobjects/signin.page.js @@ -34,21 +34,21 @@ class SigninPage extends Page { //--------------------------------------------------------- - async heading(assert) + async pageHeading(assert) { await expect(Sl.$(Data.selectors.page_heading)).toHaveTextContaining(assert); } //--------------------------------------------------------- - async subheading(assert) + async pageSubHeading(assert) { await expect(Sl.$(Data.selectors.page_subheading)).toHaveTextContaining(assert); } //--------------------------------------------------------- - async homePageHeading(assert) + async heading(assert) { await expect(Sl.$(Data.selectors.heading)).toHaveTextContaining(assert); } @@ -86,34 +86,34 @@ class SigninPage extends Page { //--------------------------------------------------------- - async submitFunctionality(data,assert) + async signInButtonText(data,assert) { await expect(Sl.dynamic(data.selectors.submit, data.selector_type)).toHaveTextContaining(assert); } //--------------------------------------------------------- - async clickSubmit(data) + async clickSignIn(data) { await Sl.dynamic(data.selectors.submit, data.selector_type).click(); } //--------------------------------------------------------- - async fillAndSubmit(email, password, data) + async fillAndSignIn(email, password, data) { await this.fillForm(email, password, data) - await this.clickSubmit(data) + await this.clickSignIn(data) } //--------------------------------------------------------- - async submitAndAssert(email, password, data, assert,assertsignin) + async signInAndAssert(email, password, data, assert,assertsignin) { - await this.fillAndSubmit(email, password, data) + await this.fillAndSignIn(email, password, data) await expect(Sl.role(Data.selectors.alert_box)).toHaveTextContaining(assert); - await this.heading(assertsignin); + await this.pageHeading(assertsignin); } //--------------------------------------------------------- @@ -126,25 +126,24 @@ class SigninPage extends Page { //--------------------------------------------------------- - async submitAndLogout(email, password, data, assert,assertsignin) + async signInAndSignOut(email, password, data, assert) { - await this.fillAndSubmit(email, password, data) - await this.homePageHeading(assert) + await this.fillAndSignIn(email, password, data) + await this.heading(assert) await this.moveAndLogout(data); - await this.heading(assertsignin); } //--------------------------------------------------------- async signInAndBrowseBack(email, password, data,assert,assertsignin) { - await this.fillAndSubmit(email, password, data) + await this.fillAndSignIn(email, password, data) await browser.pause(2000); await browser.back(); - await this.heading(assertsignin); + await this.pageHeading(assertsignin); await browser.pause(2000); await browser.forward(); - await this.homePageHeading(assert); + await this.heading(assert); await this.moveAndLogout(data); } @@ -153,11 +152,11 @@ class SigninPage extends Page { async signOutAndBrowseBack(email, password, data,assert,assertsignin) { - await this.fillAndSubmit(email, password, data) - await this.homePageHeading(assert) + await this.fillAndSignIn(email, password, data) + await this.heading(assert) await this.moveAndLogout(data); - await this.heading(assertsignin); await browser.back(); + await this.pageHeading(assertsignin); } @@ -166,7 +165,7 @@ class SigninPage extends Page { async forgotPassword(assert) { await Sl.$(Data.selectors.forgot_password).click(); - await this.heading(assert); + await this.pageHeading(assert); } //--------------------------------------------------------- diff --git a/specs/signin.spec.js b/specs/signin.spec.js index 070493e..de39534 100644 --- a/specs/signin.spec.js +++ b/specs/signin.spec.js @@ -1,7 +1,6 @@ const Page = require('../pageobjects/signin.page') const Data = require('../data/signin') const color = require("cli-color"); -const Sl = require("./../Selector"); let params = Data.params; let inputs; @@ -17,7 +16,7 @@ describe(Page.groupId(params), async () => { inputs = Data.groups[0].tests[0]; console.log(color.green('params.test'), inputs); await Page.open() - await Page.submitAndAssert( + await Page.signInAndAssert( inputs.email, inputs.password, Data, @@ -38,7 +37,7 @@ describe(Page.groupId(params), async () => { inputs = Data.groups[0].tests[1]; await Page.open() - await Page.submitAndAssert( + await Page.signInAndAssert( inputs.email, inputs.password, Data, @@ -54,7 +53,7 @@ describe(Page.groupId(params), async () => { it(Page.testId(params), async () => { inputs = Data.groups[0].tests[2]; await Page.open() - await Page.submitAndAssert( + await Page.signInAndAssert( inputs.email, inputs.password, Data, @@ -70,12 +69,11 @@ describe(Page.groupId(params), async () => { it(Page.testId(params), async () => { inputs = Data.groups[0].tests[3]; await Page.open() - await Page.submitAndLogout( + await Page.signInAndSignOut( inputs.email, inputs.password, Data, - inputs.assert.home_page_title, - inputs.assert.sign_in_page_title + inputs.assert ); await Page.refresh(); }) @@ -86,7 +84,7 @@ describe(Page.groupId(params), async () => { it(Page.testId(params), async () => { inputs = Data.groups[0].tests[4]; await Page.open() - await Page.submitAndAssert( + await Page.signInAndAssert( inputs.email, inputs.password, Data, @@ -102,7 +100,7 @@ describe(Page.groupId(params), async () => { it(Page.testId(params), async () => { inputs = Data.groups[0].tests[5]; await Page.open() - await Page.submitAndAssert( + await Page.signInAndAssert( inputs.email, inputs.password, Data, @@ -118,7 +116,7 @@ describe(Page.groupId(params), async () => { it(Page.testId(params), async () => { inputs = Data.groups[0].tests[6]; await Page.open() - await Page.submitAndAssert( + await Page.signInAndAssert( inputs.email, inputs.password, Data, @@ -134,7 +132,7 @@ describe(Page.groupId(params), async () => { it(Page.testId(params), async () => { inputs = Data.groups[0].tests[7]; await Page.open() - await Page.submitAndAssert( + await Page.signInAndAssert( inputs.email, inputs.password, Data, @@ -150,7 +148,7 @@ describe(Page.groupId(params), async () => { it(Page.testId(params), async () => { inputs = Data.groups[0].tests[8]; await Page.open() - await Page.submitAndAssert( + await Page.signInAndAssert( inputs.email, inputs.password, Data, @@ -195,12 +193,11 @@ describe(Page.groupId(params), async () => { //------------------------------------------------------------------------------------------------------------------ params.group = Data.groups[1]; params.test = Data.groups[1].tests[0]; - console.log(color.red('params.test'), params.test); it(Page.testId(params), async () => { inputs = Data.groups[1].tests[0]; await Page.open() - await Page.heading( + await Page.pageHeading( inputs.assert ) await Page.refresh(); @@ -213,7 +210,7 @@ describe(Page.groupId(params), async () => { it(Page.testId(params), async () => { inputs = Data.groups[1].tests[1]; await Page.open() - await Page.subheading( + await Page.pageSubHeading( inputs.assert ) await Page.refresh(); @@ -235,7 +232,6 @@ describe(Page.groupId(params), async () => { //------------------------------------------------------------------------------------------------------------------ params.group = Data.groups[2]; params.test = Data.groups[2].tests[0]; - console.log(color.red('params.test'), params.test); it(Page.testId(params), async () => { inputs = Data.groups[2].tests[0]; @@ -278,7 +274,7 @@ describe(Page.groupId(params), async () => { //------------------------------------------------------------------------------------------------------------------ - params.test = Data.groups[2].tests[3]; + /*params.test = Data.groups[2].tests[3]; it(Page.testId(params), async () => { inputs = Data.groups[2].tests[3]; @@ -289,7 +285,7 @@ describe(Page.groupId(params), async () => { inputs.assert ); await Page.refresh(); - }) + })*/ //------------------------------------------------------------------------------------------------------------------ params.test = Data.groups[2].tests[4]; @@ -297,7 +293,7 @@ describe(Page.groupId(params), async () => { it(Page.testId(params), async () => { inputs = Data.groups[2].tests[4]; await Page.open() - await Page.submitFunctionality( + await Page.signInButtonText( Data, inputs.assert ); From 562dc832d475aacb5eeba819b5d05b2081c93b3f Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Fri, 11 Nov 2022 15:22:42 +0530 Subject: [PATCH 31/60] updated scripts --- data/signin.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/signin.js b/data/signin.js index 24ae308..a39ece1 100644 --- a/data/signin.js +++ b/data/signin.js @@ -202,7 +202,7 @@ class Signin{ tests: [ { count: 1.1, - name: "Verify forgot password link functionality.", + name: "Verify that the forgot password link is clickable and is redirected to the forgot password page.", expect: "User should be able to click on forgot password link and forgot password page should be displayed.", assert: "Forgot Password?" }, From 97ac78145a4af69c17298be2ee9cf9e553266fdb Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Fri, 11 Nov 2022 16:25:55 +0530 Subject: [PATCH 32/60] Sign In: Test scripts updated --- data/signin.js | 6 +++--- pageobjects/signin.page.js | 4 ++-- specs/signin.spec.js | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/data/signin.js b/data/signin.js index a39ece1..3b83794 100644 --- a/data/signin.js +++ b/data/signin.js @@ -229,17 +229,17 @@ class Signin{ } }, - { + /*{ count: 1.4, name: "Verify by clicking on the eye icon password should be shown for Password text-field", expect: "Password should be shown when user click on the eye icon.", email: "", password: "1323456", assert: "1323456" - }, + },*/ { - count: 1.5, + count: 1.4, name: "Verify that the labelled text present in Sign In button.", expect: "Labelled text should be present in Sign In button.", assert: "Sign In" diff --git a/pageobjects/signin.page.js b/pageobjects/signin.page.js index 6bde17d..8f75c93 100644 --- a/pageobjects/signin.page.js +++ b/pageobjects/signin.page.js @@ -170,7 +170,7 @@ class SigninPage extends Page { //--------------------------------------------------------- - async eyeButton(password,data,assert) + /*async eyeButton(password,data,assert) { const passwordTextField = await Sl.dynamic(data.selectors.password, data.selector_type); passwordTextField.setValue(password); @@ -178,7 +178,7 @@ class SigninPage extends Page { await Sl.icon(Data.selectors.eye_icon).click(); await expect(passwordTextField).toHaveValueContaining(assert) - } + }*/ //--------------------------------------------------------- diff --git a/specs/signin.spec.js b/specs/signin.spec.js index de39534..8f55b94 100644 --- a/specs/signin.spec.js +++ b/specs/signin.spec.js @@ -288,10 +288,10 @@ describe(Page.groupId(params), async () => { })*/ //------------------------------------------------------------------------------------------------------------------ - params.test = Data.groups[2].tests[4]; + params.test = Data.groups[2].tests[3]; it(Page.testId(params), async () => { - inputs = Data.groups[2].tests[4]; + inputs = Data.groups[2].tests[3]; await Page.open() await Page.signInButtonText( Data, From 1589fd5a2587a7459ad9c94b706c7a6fa037232d Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Fri, 11 Nov 2022 17:32:51 +0530 Subject: [PATCH 33/60] Sign In: Updated Test Scripts and POM --- data/signin.js | 12 ++++++++---- pageobjects/signin.page.js | 9 ++++++--- specs/signin.spec.js | 11 ++++++----- 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/data/signin.js b/data/signin.js index 3b83794..7af5aaf 100644 --- a/data/signin.js +++ b/data/signin.js @@ -2,6 +2,7 @@ class Signin{ constructor() { this.selector_type = 'dusk'; + this.attribute_name= 'type' this.params = { group:{ @@ -229,17 +230,20 @@ class Signin{ } }, - /*{ + { count: 1.4, name: "Verify by clicking on the eye icon password should be shown for Password text-field", expect: "Password should be shown when user click on the eye icon.", email: "", password: "1323456", - assert: "1323456" - },*/ + assert: { + type_password: "password", + type_text: "text" + } + }, { - count: 1.4, + count: 1.5, name: "Verify that the labelled text present in Sign In button.", expect: "Labelled text should be present in Sign In button.", assert: "Sign In" diff --git a/pageobjects/signin.page.js b/pageobjects/signin.page.js index 8f75c93..5c7779f 100644 --- a/pageobjects/signin.page.js +++ b/pageobjects/signin.page.js @@ -1,6 +1,7 @@ const Page = require('./../Page'); const Sl = require('./../Selector'); const Data = require("../data/signin"); +const assert = require("assert"); /** * sub page containing specific selectors and methods for a specific page @@ -170,15 +171,17 @@ class SigninPage extends Page { //--------------------------------------------------------- - /*async eyeButton(password,data,assert) + async eyeButton(password,data,assert,assertext) { const passwordTextField = await Sl.dynamic(data.selectors.password, data.selector_type); passwordTextField.setValue(password); + await expect(passwordTextField).toHaveAttributeContaining(Data.attribute_name,assert) await browser.pause(2000); await Sl.icon(Data.selectors.eye_icon).click(); - await expect(passwordTextField).toHaveValueContaining(assert) + await expect(passwordTextField).toHaveAttributeContaining(Data.attribute_name,assertext) - }*/ + + } //--------------------------------------------------------- diff --git a/specs/signin.spec.js b/specs/signin.spec.js index 8f55b94..596835a 100644 --- a/specs/signin.spec.js +++ b/specs/signin.spec.js @@ -274,7 +274,7 @@ describe(Page.groupId(params), async () => { //------------------------------------------------------------------------------------------------------------------ - /*params.test = Data.groups[2].tests[3]; + params.test = Data.groups[2].tests[3]; it(Page.testId(params), async () => { inputs = Data.groups[2].tests[3]; @@ -282,16 +282,17 @@ describe(Page.groupId(params), async () => { await Page.eyeButton( inputs.password, Data, - inputs.assert + inputs.assert.type_password, + inputs.assert.type_text ); await Page.refresh(); - })*/ + }) //------------------------------------------------------------------------------------------------------------------ - params.test = Data.groups[2].tests[3]; + params.test = Data.groups[2].tests[4]; it(Page.testId(params), async () => { - inputs = Data.groups[2].tests[3]; + inputs = Data.groups[2].tests[4]; await Page.open() await Page.signInButtonText( Data, From 3de76146296dfe9fa46732698848ed70a95b085e Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Fri, 11 Nov 2022 18:34:02 +0530 Subject: [PATCH 34/60] Sign In: Test Scripts, Data & POM Updated. --- pageobjects/signin.page.js | 46 +++++++++++++++++++------------------- specs/signin.spec.js | 4 ++++ 2 files changed, 27 insertions(+), 23 deletions(-) diff --git a/pageobjects/signin.page.js b/pageobjects/signin.page.js index 5c7779f..697a4fb 100644 --- a/pageobjects/signin.page.js +++ b/pageobjects/signin.page.js @@ -35,23 +35,23 @@ class SigninPage extends Page { //--------------------------------------------------------- - async pageHeading(assert) + async pageHeading(data,assert) { - await expect(Sl.$(Data.selectors.page_heading)).toHaveTextContaining(assert); + await expect(Sl.$(data.selectors.page_heading)).toHaveTextContaining(assert); } //--------------------------------------------------------- - async pageSubHeading(assert) + async pageSubHeading(data,assert) { - await expect(Sl.$(Data.selectors.page_subheading)).toHaveTextContaining(assert); + await expect(Sl.$(data.selectors.page_subheading)).toHaveTextContaining(assert); } //--------------------------------------------------------- - async heading(assert) + async heading(data,assert) { - await expect(Sl.$(Data.selectors.heading)).toHaveTextContaining(assert); + await expect(Sl.$(data.selectors.heading)).toHaveTextContaining(assert); } @@ -113,16 +113,16 @@ class SigninPage extends Page { async signInAndAssert(email, password, data, assert,assertsignin) { await this.fillAndSignIn(email, password, data) - await expect(Sl.role(Data.selectors.alert_box)).toHaveTextContaining(assert); - await this.pageHeading(assertsignin); + await expect(Sl.role(data.selectors.alert_box)).toHaveTextContaining(assert); + await this.pageHeading(data,assertsignin); } //--------------------------------------------------------- async moveAndLogout(data) { - await Sl.role(Data.selectors.menu_item).moveTo(data); - await Sl.$(Data.selectors.logout_button).click(data); + await Sl.role(data.selectors.menu_item).moveTo(); + await Sl.$(data.selectors.logout_button).click(); } //--------------------------------------------------------- @@ -130,7 +130,7 @@ class SigninPage extends Page { async signInAndSignOut(email, password, data, assert) { await this.fillAndSignIn(email, password, data) - await this.heading(assert) + await this.heading(data,assert) await this.moveAndLogout(data); } @@ -141,10 +141,10 @@ class SigninPage extends Page { await this.fillAndSignIn(email, password, data) await browser.pause(2000); await browser.back(); - await this.pageHeading(assertsignin); + await this.pageHeading(data,assertsignin); await browser.pause(2000); await browser.forward(); - await this.heading(assert); + await this.heading(data,assert); await this.moveAndLogout(data); } @@ -154,19 +154,19 @@ class SigninPage extends Page { async signOutAndBrowseBack(email, password, data,assert,assertsignin) { await this.fillAndSignIn(email, password, data) - await this.heading(assert) + await this.heading(data,assert) await this.moveAndLogout(data); await browser.back(); - await this.pageHeading(assertsignin); + await this.pageHeading(data,assertsignin); } //--------------------------------------------------------- - async forgotPassword(assert) + async forgotPassword(data,assert) { - await Sl.$(Data.selectors.forgot_password).click(); - await this.pageHeading(assert); + await Sl.$(data.selectors.forgot_password).click(); + await this.pageHeading(data,assert); } //--------------------------------------------------------- @@ -175,19 +175,19 @@ class SigninPage extends Page { { const passwordTextField = await Sl.dynamic(data.selectors.password, data.selector_type); passwordTextField.setValue(password); - await expect(passwordTextField).toHaveAttributeContaining(Data.attribute_name,assert) + await expect(passwordTextField).toHaveAttributeContaining(data.attribute_name,assert) await browser.pause(2000); - await Sl.icon(Data.selectors.eye_icon).click(); - await expect(passwordTextField).toHaveAttributeContaining(Data.attribute_name,assertext) + await Sl.icon(data.selectors.eye_icon).click(); + await expect(passwordTextField).toHaveAttributeContaining(data.attribute_name,assertext) } //--------------------------------------------------------- - async linkText(assert) + async linkText(data,assert) { - await expect(Sl.$(Data.selectors.link_text)).toHaveTextContaining(assert); + await expect(Sl.$(data.selectors.link_text)).toHaveTextContaining(assert); } } diff --git a/specs/signin.spec.js b/specs/signin.spec.js index 596835a..c2949b3 100644 --- a/specs/signin.spec.js +++ b/specs/signin.spec.js @@ -198,6 +198,7 @@ describe(Page.groupId(params), async () => { inputs = Data.groups[1].tests[0]; await Page.open() await Page.pageHeading( + Data, inputs.assert ) await Page.refresh(); @@ -211,6 +212,7 @@ describe(Page.groupId(params), async () => { inputs = Data.groups[1].tests[1]; await Page.open() await Page.pageSubHeading( + Data, inputs.assert ) await Page.refresh(); @@ -224,6 +226,7 @@ describe(Page.groupId(params), async () => { inputs = Data.groups[1].tests[2]; await Page.open() await Page.linkText( + Data, inputs.assert ) await Page.refresh(); @@ -237,6 +240,7 @@ describe(Page.groupId(params), async () => { inputs = Data.groups[2].tests[0]; await Page.open() await Page.forgotPassword( + Data, inputs.assert ) await Page.refresh(); From 52bf7732503659d59d355e0cb78bf7a60dd2f217 Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Sat, 12 Nov 2022 11:41:06 +0530 Subject: [PATCH 35/60] Updated POM: Sign In --- pageobjects/signin.page.js | 40 +++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/pageobjects/signin.page.js b/pageobjects/signin.page.js index 697a4fb..89e864f 100644 --- a/pageobjects/signin.page.js +++ b/pageobjects/signin.page.js @@ -57,7 +57,7 @@ class SigninPage extends Page { //--------------------------------------------------------- - async fillForm(email, password, data) + async fillForm(email,password,data) { await Sl.dynamic(data.selectors.email, data.selector_type).setValue(email); await Sl.dynamic(data.selectors.password, data.selector_type).setValue(password); @@ -65,11 +65,11 @@ class SigninPage extends Page { //--------------------------------------------------------- - async fillAndRemoveEmail(email,data,assertvalue,assert) + async fillAndRemoveEmail(email,data,assert_value,assert) { const emailTextField = await Sl.dynamic(data.selectors.email, data.selector_type); emailTextField.setValue(email); - await expect(emailTextField).toHaveValueContaining(assertvalue); + await expect(emailTextField).toHaveValueContaining(assert_value); emailTextField.clearValue(); await expect(emailTextField).toHaveValueContaining(assert); @@ -77,15 +77,15 @@ class SigninPage extends Page { //--------------------------------------------------------- - async fillAndRemovePassword(password,data,assertvalue,assert) { + async fillAndRemovePassword(password,data,assert_value,assert) { const passwordTextField = await Sl.dynamic(data.selectors.password, data.selector_type); passwordTextField.setValue(password); - await expect(passwordTextField).toHaveValueContaining(assertvalue); + await expect(passwordTextField).toHaveValueContaining(assert_value); passwordTextField.clearValue(); await expect(passwordTextField).toHaveValueContaining(assert); } - //--------------------------------------------------------- + //-------------------------------------------------------- async signInButtonText(data,assert) { @@ -101,20 +101,20 @@ class SigninPage extends Page { //--------------------------------------------------------- - async fillAndSignIn(email, password, data) + async fillAndSignIn(email,password,data) { - await this.fillForm(email, password, data) + await this.fillForm(email,password,data) await this.clickSignIn(data) } //--------------------------------------------------------- - async signInAndAssert(email, password, data, assert,assertsignin) + async signInAndAssert(email,password,data,assert,assert_signin) { - await this.fillAndSignIn(email, password, data) + await this.fillAndSignIn(email,password,data) await expect(Sl.role(data.selectors.alert_box)).toHaveTextContaining(assert); - await this.pageHeading(data,assertsignin); + await this.pageHeading(data,assert_signin); } //--------------------------------------------------------- @@ -127,21 +127,21 @@ class SigninPage extends Page { //--------------------------------------------------------- - async signInAndSignOut(email, password, data, assert) + async signInAndSignOut(email,password,data,assert) { - await this.fillAndSignIn(email, password, data) + await this.fillAndSignIn(email,password,data) await this.heading(data,assert) await this.moveAndLogout(data); } //--------------------------------------------------------- - async signInAndBrowseBack(email, password, data,assert,assertsignin) + async signInAndBrowseBack(email,password,data,assert,assert_signin) { await this.fillAndSignIn(email, password, data) await browser.pause(2000); await browser.back(); - await this.pageHeading(data,assertsignin); + await this.pageHeading(data,assert_signin); await browser.pause(2000); await browser.forward(); await this.heading(data,assert); @@ -151,13 +151,13 @@ class SigninPage extends Page { //--------------------------------------------------------- - async signOutAndBrowseBack(email, password, data,assert,assertsignin) + async signOutAndBrowseBack(email,password,data,assert,assert_signin) { - await this.fillAndSignIn(email, password, data) + await this.fillAndSignIn(email,password,data) await this.heading(data,assert) await this.moveAndLogout(data); await browser.back(); - await this.pageHeading(data,assertsignin); + await this.pageHeading(data,assert_signin); } @@ -171,14 +171,14 @@ class SigninPage extends Page { //--------------------------------------------------------- - async eyeButton(password,data,assert,assertext) + async eyeButton(password,data,assert,assert_text) { const passwordTextField = await Sl.dynamic(data.selectors.password, data.selector_type); passwordTextField.setValue(password); await expect(passwordTextField).toHaveAttributeContaining(data.attribute_name,assert) await browser.pause(2000); await Sl.icon(data.selectors.eye_icon).click(); - await expect(passwordTextField).toHaveAttributeContaining(data.attribute_name,assertext) + await expect(passwordTextField).toHaveAttributeContaining(data.attribute_name,assert_text) } From 147660d921216eac6470453882fe174ef3e8b23b Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Sat, 12 Nov 2022 12:20:57 +0530 Subject: [PATCH 36/60] Sign Up: First test script --- Page.js | 1 + data/signup.js | 41 ++++++++++++++++++++++++++++++++++++ pageobjects/signin.page.js | 2 -- pageobjects/signup.page.js | 43 ++++++++++++++++++++++++++++++++++++++ specs/signup.spec.js | 24 +++++++++++++++++++++ 5 files changed, 109 insertions(+), 2 deletions(-) create mode 100644 pageobjects/signup.page.js create mode 100644 specs/signup.spec.js diff --git a/Page.js b/Page.js index cde29a4..ab1aa0b 100644 --- a/Page.js +++ b/Page.js @@ -13,6 +13,7 @@ module.exports = class Page { constructor() { this.base_url = env.base_url; + this.signup_url = env.signup_url this.params = { page: { id: null, diff --git a/data/signup.js b/data/signup.js index e69de29..3a710bd 100644 --- a/data/signup.js +++ b/data/signup.js @@ -0,0 +1,41 @@ +class Signup{ + + constructor() { + + this.params = { + group:{ + count: null, + name: null, + } + } + + this.selectors = { + page_heading: 'h3', + } + + this.params.page = { + id: "SU", + name: "Sign Up", + url: '/' + } + this.groups = [ + { + count: 1, + name:"Validation", + tests: [ + { + count: 1.1, + name: "Verify heading of the Sign Up form.", + expect: "Heading of the sign up form should be present.", + assert : "Sign up to your account" + + + } + ] + } + ] + } + +} + +module.exports = new Signup(); \ No newline at end of file diff --git a/pageobjects/signin.page.js b/pageobjects/signin.page.js index 89e864f..a22c30e 100644 --- a/pageobjects/signin.page.js +++ b/pageobjects/signin.page.js @@ -1,7 +1,5 @@ const Page = require('./../Page'); const Sl = require('./../Selector'); -const Data = require("../data/signin"); -const assert = require("assert"); /** * sub page containing specific selectors and methods for a specific page diff --git a/pageobjects/signup.page.js b/pageobjects/signup.page.js new file mode 100644 index 0000000..3832778 --- /dev/null +++ b/pageobjects/signup.page.js @@ -0,0 +1,43 @@ +const Page = require('./../Page'); +const Sl = require('./../Selector'); + +/** + * sub page containing specific selectors and methods for a specific page + */ +class SignupPage extends Page { + + constructor() { + super(); + this.params.page.id = "SU"; + this.params.page.name = "Sign-Up"; + this.params.page.url = this.signup_url; + } + + //--------------------------------------------------------- + + async open (url=null) { + if(url) + { + this.params.page.url = url + } + return super.open(this.params.page.url); + } + + //--------------------------------------------------------- + + async refresh() + { + await browser.refresh(); + await browser.pause(2000); + } + //--------------------------------------------------------- + + async pageHeading(data,assert) + { + await expect(Sl.$(data.selectors.page_heading)).toHaveTextContaining(assert); + } + + //--------------------------------------------------------- +} + +module.exports = new SignupPage(); \ No newline at end of file diff --git a/specs/signup.spec.js b/specs/signup.spec.js new file mode 100644 index 0000000..fda1d4f --- /dev/null +++ b/specs/signup.spec.js @@ -0,0 +1,24 @@ +const Page = require('../pageobjects/signup.page') +const Data = require('../data/signup') +const color = require("cli-color"); + +let params = Data.params; +let inputs; + +params.group = Data.groups[0]; + +describe(Page.groupId(params), async () => { + + params.test = Data.groups[0].tests[0]; + console.log(color.red('params.test'), params.test); + + it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[0]; + await Page.open() + await Page.pageHeading( + Data, + inputs.assert + ) + await Page.refresh(); + }) +}) \ No newline at end of file From 3fa31e159c8a016230ae9fed061e07d06f1882a4 Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Sat, 12 Nov 2022 14:22:42 +0530 Subject: [PATCH 37/60] added test script --- data/signup.js | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/data/signup.js b/data/signup.js index 3a710bd..8183c13 100644 --- a/data/signup.js +++ b/data/signup.js @@ -28,9 +28,20 @@ class Signup{ name: "Verify heading of the Sign Up form.", expect: "Heading of the sign up form should be present.", assert : "Sign up to your account" - - - } + }, + { + count: 1.2, + name: "Verify user is able to signup by leaving first name text-field blank", + expect: "User should not be able to signup and an error message should be displayed", + first_name: "", + last_name : "Test", + email : "demo@gmail.com", + password: "testing", + assert: { + error_msg: " Please fill out this field. ", + sign_up_page_heading: "Sign up to your account" + } + }, ] } ] From 134acbfe0b1a89989f5363d0a4f444e671fbca4e Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Sat, 12 Nov 2022 17:10:47 +0530 Subject: [PATCH 38/60] scripts added. --- data/signup.js | 50 ++++++++++++++++++++++- pageobjects/signup.page.js | 49 ++++++++++++++++++++++- specs/signup.spec.js | 81 +++++++++++++++++++++++++++++++++++++- 3 files changed, 176 insertions(+), 4 deletions(-) diff --git a/data/signup.js b/data/signup.js index 8183c13..42c1c6a 100644 --- a/data/signup.js +++ b/data/signup.js @@ -1,6 +1,7 @@ class Signup{ constructor() { + this.selector_type = 'placeholder'; this.params = { group:{ @@ -10,6 +11,12 @@ class Signup{ } this.selectors = { + first_name: 'First Name', + last_name: 'Last Name', + email: 'Work email address', + password: 'Password', + signUp: 'span=Sign Up', + alert_msg: 'p', page_heading: 'h3', } @@ -35,10 +42,49 @@ class Signup{ expect: "User should not be able to signup and an error message should be displayed", first_name: "", last_name : "Test", - email : "demo@gmail.com", + email : "demotest@gmail.com", password: "testing", assert: { - error_msg: " Please fill out this field. ", + error_msg: "Please fill out this field.", + sign_up_page_heading: "Sign up to your account" + } + }, + { + count: 1.3, + name: "Verify user is able to signup by leaving last name text-field blank", + expect: "User should not be able to signup and an error message should be displayed", + first_name: "Demo", + last_name : "", + email : "demotest@gmail.com", + password: "testing", + assert: { + error_msg: "Please fill out this field.", + sign_up_page_heading: "Sign up to your account" + } + }, + { + count: 1.4, + name: "Verify user is able to signup by leaving email text-field blank", + expect: "User should not be able to signup and an error message should be displayed", + first_name: "Demo", + last_name : "Test", + email : "", + password: "testing", + assert: { + error_msg: "Please fill out this field.", + sign_up_page_heading: "Sign up to your account" + } + }, + { + count: 1.5, + name: "Verify user is able to signup by leaving password text-field blank", + expect: "User should not be able to signup and an error message should be displayed", + first_name: "Demo", + last_name : "Test", + email : "demotest@gmail.com", + password: "", + assert: { + error_msg: "Please fill out this field.", sign_up_page_heading: "Sign up to your account" } }, diff --git a/pageobjects/signup.page.js b/pageobjects/signup.page.js index 3832778..c43e792 100644 --- a/pageobjects/signup.page.js +++ b/pageobjects/signup.page.js @@ -32,11 +32,58 @@ class SignupPage extends Page { } //--------------------------------------------------------- - async pageHeading(data,assert) + async formHeading(data,assert) { await expect(Sl.$(data.selectors.page_heading)).toHaveTextContaining(assert); } + //-------------------------------------------------------- + + async signUpButtonText(data,assert) + { + await expect(Sl.dynamic(data.selectors.submit, data.selector_type)).toHaveTextContaining(assert); + } + + //--------------------------------------------------------- + + async clickSignUp(data) + { + const button = await Sl.$(data.selectors.signUp); + button.click(); + await browser.pause(2000); + button.click(); + + } + + //--------------------------------------------------------- + + async fillForm(first_name,last_name,email,password,data) + { + await Sl.attr(data.selector_type, data.selectors.first_name).setValue(first_name); + await Sl.attr(data.selector_type, data.selectors.last_name).setValue(last_name); + await Sl.attr(data.selector_type, data.selectors.email).setValue(email); + await Sl.attr(data.selector_type, data.selectors.password).setValue(password); + } + + //--------------------------------------------------------- + + async fillAndSignUp(first_name,last_name,email,password,data) + { + await this.fillForm(first_name,last_name,email,password,data) + await this.clickSignUp(data) + await browser.pause(2000); + + } + + //--------------------------------------------------------- + + async signUpAndAssert(first_name,last_name,email,password,data,assert,assert_signup) + { + await this.fillAndSignUp(first_name,last_name,email,password,data) + await expect(Sl.$(data.selectors.alert_msg)).toHaveTextContaining(assert); + await this.formHeading(data,assert_signup); + } + //--------------------------------------------------------- } diff --git a/specs/signup.spec.js b/specs/signup.spec.js index fda1d4f..008ab11 100644 --- a/specs/signup.spec.js +++ b/specs/signup.spec.js @@ -15,10 +15,89 @@ describe(Page.groupId(params), async () => { it(Page.testId(params), async () => { inputs = Data.groups[0].tests[0]; await Page.open() - await Page.pageHeading( + await Page.formHeading( Data, inputs.assert ) await Page.refresh(); }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[1]; + + it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[1]; + await Page.open() + await Page.signUpAndAssert( + inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, + Data, + inputs.assert.error_msg, + inputs.assert.sign_up_page_heading + ); + await Page.refresh(); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[2]; + + it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[2]; + await Page.open() + await Page.signUpAndAssert( + inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, + Data, + inputs.assert.error_msg, + inputs.assert.sign_up_page_heading + ); + await Page.refresh(); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[3]; + + it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[3]; + await Page.open() + await Page.signUpAndAssert( + inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, + Data, + inputs.assert.error_msg, + inputs.assert.sign_up_page_heading + ); + await Page.refresh(); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[4]; + + it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[4]; + await Page.open() + await Page.signUpAndAssert( + inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, + Data, + inputs.assert.error_msg, + inputs.assert.sign_up_page_heading + ); + await Page.refresh(); + }) + + //------------------------------------------------------------------------------------------------------------------ + }) \ No newline at end of file From 452558f697fac87971f71938b832d5fd5ba4da88 Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Sat, 12 Nov 2022 18:39:43 +0530 Subject: [PATCH 39/60] scripts added: Sign up --- data/signup.js | 25 +++++++++++++++++ pageobjects/signup.page.js | 28 +++++++++++++++++++ specs/signup.spec.js | 57 ++++++++++++++++++++++++++++++++++---- 3 files changed, 105 insertions(+), 5 deletions(-) diff --git a/data/signup.js b/data/signup.js index 42c1c6a..f9eae15 100644 --- a/data/signup.js +++ b/data/signup.js @@ -2,6 +2,7 @@ class Signup{ constructor() { this.selector_type = 'placeholder'; + //this.attribute_name = '' this.params = { group:{ @@ -88,6 +89,30 @@ class Signup{ sign_up_page_heading: "Sign up to your account" } }, + { + count: 1.6, + name: "Verify that the placeholder text is present in first name text-field", + expect: "Placeholder text should be present in the first name text-field.", + assert: "First Name" + }, + { + count: 1.7, + name: "Verify that the placeholder text is present in last name text-field", + expect: "Placeholder text should be present in the last name text-field.", + assert: "Last Name" + }, + { + count: 1.8, + name: "Verify that the placeholder text is present in email text-field", + expect: "Placeholder text should be present in the email text field.", + assert: "Work email address" + }, + { + count: 1.9, + name: "Verify that the placeholder text is present in password text-field", + expect: "Placeholder text should be present in the password text field.", + assert: "Password" + }, ] } ] diff --git a/pageobjects/signup.page.js b/pageobjects/signup.page.js index c43e792..bddca31 100644 --- a/pageobjects/signup.page.js +++ b/pageobjects/signup.page.js @@ -37,6 +37,34 @@ class SignupPage extends Page { await expect(Sl.$(data.selectors.page_heading)).toHaveTextContaining(assert); } + //--------------------------------------------------------- + + async firstNamePlaceholderText(data,assert) + { + await expect(Sl.attr(data.selector_type, data.selectors.first_name)).toHaveAttributeContaining(data.selector_type,assert) + } + + //--------------------------------------------------------- + + async lastNamePlaceholderText(data,assert) + { + await expect(Sl.attr(data.selector_type, data.selectors.last_name)).toHaveAttributeContaining(data.selector_type,assert) + } + + //--------------------------------------------------------- + + async emailPlaceholderText(data,assert) + { + await expect(Sl.attr(data.selector_type, data.selectors.email)).toHaveAttributeContaining(data.selector_type,assert) + } + + //--------------------------------------------------------- + + async passwordPlaceholderText(data,assert) + { + await expect(Sl.attr(data.selector_type, data.selectors.password)).toHaveAttributeContaining(data.selector_type,assert) + } + //-------------------------------------------------------- async signUpButtonText(data,assert) diff --git a/specs/signup.spec.js b/specs/signup.spec.js index 008ab11..d32d5bb 100644 --- a/specs/signup.spec.js +++ b/specs/signup.spec.js @@ -19,7 +19,6 @@ describe(Page.groupId(params), async () => { Data, inputs.assert ) - await Page.refresh(); }) //------------------------------------------------------------------------------------------------------------------ @@ -38,7 +37,6 @@ describe(Page.groupId(params), async () => { inputs.assert.error_msg, inputs.assert.sign_up_page_heading ); - await Page.refresh(); }) //------------------------------------------------------------------------------------------------------------------ @@ -57,7 +55,6 @@ describe(Page.groupId(params), async () => { inputs.assert.error_msg, inputs.assert.sign_up_page_heading ); - await Page.refresh(); }) //------------------------------------------------------------------------------------------------------------------ @@ -76,7 +73,6 @@ describe(Page.groupId(params), async () => { inputs.assert.error_msg, inputs.assert.sign_up_page_heading ); - await Page.refresh(); }) //------------------------------------------------------------------------------------------------------------------ @@ -95,7 +91,58 @@ describe(Page.groupId(params), async () => { inputs.assert.error_msg, inputs.assert.sign_up_page_heading ); - await Page.refresh(); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[5]; + + it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[5]; + await Page.open() + await Page.firstNamePlaceholderText( + Data, + inputs.assert + ); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[6]; + + it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[6]; + await Page.open() + await Page.lastNamePlaceholderText( + Data, + inputs.assert + ); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[7]; + + it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[7]; + await Page.open() + await Page.emailPlaceholderText( + Data, + inputs.assert + ); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[8]; + + it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[8]; + await Page.open() + await Page.passwordPlaceholderText( + Data, + inputs.assert + ); }) //------------------------------------------------------------------------------------------------------------------ From e19a83ba1ba4714c629f0947bb6bc5922433b418 Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Sat, 12 Nov 2022 20:04:14 +0530 Subject: [PATCH 40/60] added test scripts. --- data/signup.js | 36 ++++++++++++++++++++++++++--- pageobjects/signup.page.js | 18 +++++++++++++++ specs/signup.spec.js | 47 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 98 insertions(+), 3 deletions(-) diff --git a/data/signup.js b/data/signup.js index f9eae15..68bd09a 100644 --- a/data/signup.js +++ b/data/signup.js @@ -44,7 +44,7 @@ class Signup{ first_name: "", last_name : "Test", email : "demotest@gmail.com", - password: "testing", + password: "testing123", assert: { error_msg: "Please fill out this field.", sign_up_page_heading: "Sign up to your account" @@ -57,7 +57,7 @@ class Signup{ first_name: "Demo", last_name : "", email : "demotest@gmail.com", - password: "testing", + password: "testing123", assert: { error_msg: "Please fill out this field.", sign_up_page_heading: "Sign up to your account" @@ -70,7 +70,7 @@ class Signup{ first_name: "Demo", last_name : "Test", email : "", - password: "testing", + password: "testing123", assert: { error_msg: "Please fill out this field.", sign_up_page_heading: "Sign up to your account" @@ -113,6 +113,36 @@ class Signup{ expect: "Placeholder text should be present in the password text field.", assert: "Password" }, + { + count: 2.1, + name: "Verify user is able to signup by filling all the mandatory fields", + expect: "User should be able to signup for the application successfully and signin page should be displayed.", + first_name: "Demo", + last_name : "Test", + email : "demotest12345@gmail.com", + password: "testing123", + assert: "Sign in to your account" + }, + { + count: 2.2, + name: "Verify user is able to signup by leaving all the mandatory fields blank", + expect: "User should not be able to signup and an error message should be displayed", + assert: { + error_msg: "Please fill out this field.", + sign_up_page_heading: "Sign up to your account" + } + }, + { + count: 2.3, + name: "Verify user is able to signup using alphabetic characters in first name text-field", + expect: "User should be able to signup for the application successfully and signin page should be displayed.", + first_name: "Demo", + last_name : "Test", + email : "demote24@gmail.com", + password: "testing123", + assert: "Sign in to your account" + }, + ] } ] diff --git a/pageobjects/signup.page.js b/pageobjects/signup.page.js index bddca31..b2c14b5 100644 --- a/pageobjects/signup.page.js +++ b/pageobjects/signup.page.js @@ -113,6 +113,24 @@ class SignupPage extends Page { } //--------------------------------------------------------- + + async signUpWithValidData(first_name,last_name,email,password,data,assert) + { + await this.fillAndSignUp(first_name,last_name,email,password,data) + await expect(Sl.$(data.selectors.page_heading)).toHaveTextContaining(assert); + + } + + //--------------------------------------------------------- + + async signUpWithBlankTextfields(data,assert,assert_signup) + { + await this.clickSignUp(data) + await browser.pause(2000); + await expect(Sl.$(data.selectors.alert_msg)).toHaveTextContaining(assert); + await this.formHeading(data,assert_signup); + + } } module.exports = new SignupPage(); \ No newline at end of file diff --git a/specs/signup.spec.js b/specs/signup.spec.js index d32d5bb..92588f2 100644 --- a/specs/signup.spec.js +++ b/specs/signup.spec.js @@ -146,5 +146,52 @@ describe(Page.groupId(params), async () => { }) //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[9]; + + it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[9]; + await Page.open() + await Page.signUpWithValidData( + inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, + Data, + inputs.assert + ); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[10]; + + it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[10]; + await Page.open() + await Page.signUpWithBlankTextfields( + Data, + inputs.assert.error_msg, + inputs.assert.sign_up_page_heading + ); + }) + + //------------------------------------------------------------------------------------------------------------------ + + params.test = Data.groups[0].tests[11]; + + it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[11]; + await Page.open() + await Page.signUpWithValidData( + inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, + Data, + inputs.assert + ); + }) }) \ No newline at end of file From 3fe92755bb27933e86442dbf24d9247289a0eb29 Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Mon, 14 Nov 2022 20:14:31 +0530 Subject: [PATCH 41/60] Sign Up: Test scripts added --- data/signin.js | 4 +- data/signup.js | 131 +++++++++++++++++++++++- pageobjects/signup.page.js | 54 +++++++++- specs/signup.spec.js | 205 ++++++++++++++++++++++++++++++++++++- 4 files changed, 383 insertions(+), 11 deletions(-) diff --git a/data/signin.js b/data/signin.js index 7af5aaf..08634a9 100644 --- a/data/signin.js +++ b/data/signin.js @@ -244,8 +244,8 @@ class Signin{ { count: 1.5, - name: "Verify that the labelled text present in Sign In button.", - expect: "Labelled text should be present in Sign In button.", + name: "Verify that the label text present in Sign In button.", + expect: "Label text should be present in Sign In button.", assert: "Sign In" } ] diff --git a/data/signup.js b/data/signup.js index 68bd09a..195b8bc 100644 --- a/data/signup.js +++ b/data/signup.js @@ -18,7 +18,11 @@ class Signup{ password: 'Password', signUp: 'span=Sign Up', alert_msg: 'p', + alert_box: 'alertdialog', page_heading: 'h3', + first_name_label_text: 'label=First Name', + last_name_label_text: 'label=Last Name', + email_label_text: 'label=Email' } this.params.page = { @@ -119,7 +123,7 @@ class Signup{ expect: "User should be able to signup for the application successfully and signin page should be displayed.", first_name: "Demo", last_name : "Test", - email : "demotest12345@gmail.com", + email : "demotest"+Math.random()*100+"@gmail.com", password: "testing123", assert: "Sign in to your account" }, @@ -134,15 +138,134 @@ class Signup{ }, { count: 2.3, - name: "Verify user is able to signup using alphabetic characters in first name text-field", + name: "Verify user is able to signup by entering alphabetic characters in first name text-field", expect: "User should be able to signup for the application successfully and signin page should be displayed.", first_name: "Demo", last_name : "Test", - email : "demote24@gmail.com", + email : "demotes"+Math.random()*100+"@gmail.com", password: "testing123", assert: "Sign in to your account" }, - + { + count: 2.4, + name: "Verify user is able to signup by entering only space in first name text-field", + expect: "User should not be able to signup for the application and an error message should be displayed.", + first_name: " ", + last_name : "Test", + email : "demotes"+Math.random()*100+"@gmail.com", + password: "testing123", + assert: { + error_msg: "First name field is required", + sign_up_page_heading: "Sign up to your account" + } + }, + { + count: 2.5, + name: "Verify that the label text 'First Name' is present above the first name text-field", + expect: "Label text 'First Name' should be present above the first name text-field", + assert: "First Name" + }, + { + count: 2.6, + name: "Verify user is able to remove text from the first name text-field", + expect: "User should be able to remove text from the first name text-field", + first_name: "Demo", + assert: { + text_value: "Demo", + blank_value: "" + } + }, + { + count: 2.7, + name: "Verify user is able to signup by entering alphabetic characters in last name text-field", + expect: "User should be able to signup for the application successfully and signin page should be displayed.", + first_name: "Demo", + last_name : "Test", + email : "demotes"+Math.random()*100+"@gmail.com", + password: "testing123", + assert: "Sign in to your account" + }, + { + count: 2.8, + name: "Verify user is able to signup by entering only space in last name text-field", + expect: "User should not be able to signup for the application and an error message should be displayed.", + first_name: "Demo", + last_name : " ", + email : "demotes"+Math.random()*100+"@gmail.com", + password: "testing123", + assert: { + error_msg: "Last name field is required", + sign_up_page_heading: "Sign up to your account" + } + }, + { + count: 2.9, + name: "Verify that the label text 'Last Name' is present above the last name text-field", + expect: "Label text 'Last Name' should be present above the last name text-field", + assert: "Last Name" + }, + { + count: 3.1, + name: "Verify user is able to remove text from the last name text-field", + expect: "User should be able to remove text from the last name text-field", + last_name: "Test", + assert: { + text_value: "Test", + blank_value: "" + } + }, + { + count: 3.2, + name: "Verify that the label text 'Email' is present above the email text-field", + expect: "Label text 'Email' should be present above the email text-field", + assert: "Email" + }, + { + count: 3.3, + name: "Verify user is able to signup by entering only space in email text-field", + expect: "User should not be able to signup for the application and an error message should be displayed.", + first_name: "Demo", + last_name : "Test", + email : " ", + password: "testing123", + assert: { + error_msg: "Please fill out this field.", + sign_up_page_heading: "Sign up to your account" + } + }, + { + count: 3.4, + name: "Verify user is able to signup by entering valid email in email text-field", + expect: "User should be able to signup for the application successfully and signin page should be displayed.", + first_name: "Demo", + last_name : "Test", + email : "demotes"+Math.random()*100+"@gmail.com", + password: "testing123", + assert: "Sign in to your account" + }, + { + count: 3.5, + name: "Verify if the email field accepts '+' sign in the email address.", + expect: "User should be able to signup for the application successfully and signin page should be displayed.", + first_name: "Demo", + last_name : "Test", + email : "demo+1tes"+Math.random()*100+"@gmail.com", + password: "testing123", + assert: "Sign in to your account" + }, + { + count: 3.6, + name: "Verify the email id field With the missing '@' sign and domain in the email address", + expect: "User should not be able to signup for the application and an error message should be displayed.", + first_name: "Demo", + last_name : "Test", + email : "demotest", + password: "testing123", + assert: { + error_msg: "Please include an '@' in the email address.", + sign_up_page_heading: "Sign up to your account" + } + }, ] } ] diff --git a/pageobjects/signup.page.js b/pageobjects/signup.page.js index b2c14b5..4e914ee 100644 --- a/pageobjects/signup.page.js +++ b/pageobjects/signup.page.js @@ -44,6 +44,48 @@ class SignupPage extends Page { await expect(Sl.attr(data.selector_type, data.selectors.first_name)).toHaveAttributeContaining(data.selector_type,assert) } + //--------------------------------------------------------- + + async firstNameLabelText(data,assert) + { + await expect(Sl.$(data.selectors.first_name_label_text)).toHaveTextContaining(assert) + } + + //--------------------------------------------------------- + + async lastNameLabelText(data,assert) + { + await expect(Sl.$(data.selectors.last_name_label_text)).toHaveTextContaining(assert) + } + + //--------------------------------------------------------- + + async emailLabelText(data,assert) + { + await expect(Sl.$(data.selectors.email_label_text)).toHaveTextContaining(assert) + } + + //--------------------------------------------------------- + + async fillAndRemoveFirstName(first_name,data,assert_value,assert) { + const firstNameTextField = await Sl.attr(data.selector_type, data.selectors.first_name) + firstNameTextField.setValue(first_name); + await expect(firstNameTextField).toHaveValueContaining(assert_value); + firstNameTextField.clearValue(); + await expect(firstNameTextField).toHaveValueContaining(assert); + } + + //--------------------------------------------------------- + + async fillAndRemoveLastName(last_name,data,assert_value,assert) { + const lastNameTextField = await Sl.attr(data.selector_type, data.selectors.last_name) + lastNameTextField.setValue(last_name); + await expect(lastNameTextField).toHaveValueContaining(assert_value); + lastNameTextField.clearValue(); + await expect(lastNameTextField).toHaveValueContaining(assert); + } + + //--------------------------------------------------------- async lastNamePlaceholderText(data,assert) @@ -77,6 +119,7 @@ class SignupPage extends Page { async clickSignUp(data) { const button = await Sl.$(data.selectors.signUp); + //await browser.pause(2000); button.click(); await browser.pause(2000); button.click(); @@ -105,7 +148,7 @@ class SignupPage extends Page { //--------------------------------------------------------- - async signUpAndAssert(first_name,last_name,email,password,data,assert,assert_signup) + async signUpAndAssertMsg(first_name,last_name,email,password,data,assert,assert_signup) { await this.fillAndSignUp(first_name,last_name,email,password,data) await expect(Sl.$(data.selectors.alert_msg)).toHaveTextContaining(assert); @@ -114,6 +157,15 @@ class SignupPage extends Page { //--------------------------------------------------------- + async signUpAndAssertBox(first_name,last_name,email,password,data,assert,assert_signup) + { + await this.fillAndSignUp(first_name,last_name,email,password,data) + await expect(Sl.role(data.selectors.alert_box)).toHaveTextContaining(assert); + await this.formHeading(data,assert_signup); + } + + //--------------------------------------------------------- + async signUpWithValidData(first_name,last_name,email,password,data,assert) { await this.fillAndSignUp(first_name,last_name,email,password,data) diff --git a/specs/signup.spec.js b/specs/signup.spec.js index 92588f2..db07faa 100644 --- a/specs/signup.spec.js +++ b/specs/signup.spec.js @@ -28,7 +28,7 @@ describe(Page.groupId(params), async () => { inputs = Data.groups[0].tests[1]; await Page.open() - await Page.signUpAndAssert( + await Page.signUpAndAssertMsg( inputs.first_name, inputs.last_name, inputs.email, @@ -46,7 +46,7 @@ describe(Page.groupId(params), async () => { inputs = Data.groups[0].tests[2]; await Page.open() - await Page.signUpAndAssert( + await Page.signUpAndAssertMsg( inputs.first_name, inputs.last_name, inputs.email, @@ -64,7 +64,7 @@ describe(Page.groupId(params), async () => { inputs = Data.groups[0].tests[3]; await Page.open() - await Page.signUpAndAssert( + await Page.signUpAndAssertMsg( inputs.first_name, inputs.last_name, inputs.email, @@ -82,7 +82,7 @@ describe(Page.groupId(params), async () => { inputs = Data.groups[0].tests[4]; await Page.open() - await Page.signUpAndAssert( + await Page.signUpAndAssertMsg( inputs.first_name, inputs.last_name, inputs.email, @@ -194,4 +194,201 @@ describe(Page.groupId(params), async () => { ); }) + //------------------------------------------------------------------------------------------------------------------ + + params.test = Data.groups[0].tests[12]; + + it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[12]; + await Page.open() + await Page.signUpAndAssertBox( + inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, + Data, + inputs.assert.error_msg, + inputs.assert.sign_up_page_heading + ); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[13]; + + it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[13]; + await Page.open() + await Page.firstNameLabelText( + Data, + inputs.assert + ); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[14]; + + it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[14]; + await Page.open() + await Page.fillAndRemoveFirstName( + inputs.first_name, + Data, + inputs.assert.text_value, + inputs.assert.blank_value + ) + await Page.refresh(); + }) + + //------------------------------------------------------------------------------------------------------------------ + + params.test = Data.groups[0].tests[15]; + + it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[15]; + await Page.open() + await Page.signUpWithValidData( + inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, + Data, + inputs.assert + ); + }) + + //------------------------------------------------------------------------------------------------------------------ + + params.test = Data.groups[0].tests[16]; + + it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[16]; + await Page.open() + await Page.signUpAndAssertBox( + inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, + Data, + inputs.assert.error_msg, + inputs.assert.sign_up_page_heading + ); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[17]; + + it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[17]; + await Page.open() + await Page.lastNameLabelText( + Data, + inputs.assert + ); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[18]; + + it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[18]; + await Page.open() + await Page.fillAndRemoveLastName( + inputs.last_name, + Data, + inputs.assert.text_value, + inputs.assert.blank_value + ) + await Page.refresh(); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[19]; + + it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[19]; + await Page.open() + await Page.emailLabelText( + Data, + inputs.assert + ); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[20]; + + it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[20]; + await Page.open() + await Page.signUpAndAssertMsg( + inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, + Data, + inputs.assert.error_msg, + inputs.assert.sign_up_page_heading + ); + }) + + //------------------------------------------------------------------------------------------------------------------ + + params.test = Data.groups[0].tests[21]; + + it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[21]; + await Page.open() + await Page.signUpWithValidData( + inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, + Data, + inputs.assert + ); + }) + + //------------------------------------------------------------------------------------------------------------------ + + params.test = Data.groups[0].tests[22]; + + it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[22]; + await Page.open() + await Page.signUpWithValidData( + inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, + Data, + inputs.assert + ); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[23]; + + it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[23]; + await Page.open() + await Page.signUpAndAssertMsg( + inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, + Data, + inputs.assert.error_msg, + inputs.assert.sign_up_page_heading + ); + }) + }) \ No newline at end of file From 1715244e02ccbd40632031cf9952f1dc681a697f Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Tue, 15 Nov 2022 11:49:06 +0530 Subject: [PATCH 42/60] updated files --- data/signup.js | 1 + pageobjects/signup.page.js | 1 + specs/signup.spec.js | 2 -- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/data/signup.js b/data/signup.js index 195b8bc..abe2694 100644 --- a/data/signup.js +++ b/data/signup.js @@ -266,6 +266,7 @@ class Signup{ sign_up_page_heading: "Sign up to your account" } }, + ] } ] diff --git a/pageobjects/signup.page.js b/pageobjects/signup.page.js index 4e914ee..3c4af95 100644 --- a/pageobjects/signup.page.js +++ b/pageobjects/signup.page.js @@ -132,6 +132,7 @@ class SignupPage extends Page { { await Sl.attr(data.selector_type, data.selectors.first_name).setValue(first_name); await Sl.attr(data.selector_type, data.selectors.last_name).setValue(last_name); + await browser.pause(1000); await Sl.attr(data.selector_type, data.selectors.email).setValue(email); await Sl.attr(data.selector_type, data.selectors.password).setValue(password); } diff --git a/specs/signup.spec.js b/specs/signup.spec.js index db07faa..87766fa 100644 --- a/specs/signup.spec.js +++ b/specs/signup.spec.js @@ -238,7 +238,6 @@ describe(Page.groupId(params), async () => { inputs.assert.text_value, inputs.assert.blank_value ) - await Page.refresh(); }) //------------------------------------------------------------------------------------------------------------------ @@ -303,7 +302,6 @@ describe(Page.groupId(params), async () => { inputs.assert.text_value, inputs.assert.blank_value ) - await Page.refresh(); }) //------------------------------------------------------------------------------------------------------------------ From 2a6dda1b008132feb75ddacc7391cc350c31a52d Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Tue, 15 Nov 2022 13:26:11 +0530 Subject: [PATCH 43/60] added test scripts --- data/signup.js | 88 +++++++++++++++++++++++++ pageobjects/signup.page.js | 7 -- specs/signup.spec.js | 127 +++++++++++++++++++++++++++++++++++++ 3 files changed, 215 insertions(+), 7 deletions(-) diff --git a/data/signup.js b/data/signup.js index abe2694..cfad9e9 100644 --- a/data/signup.js +++ b/data/signup.js @@ -266,6 +266,94 @@ class Signup{ sign_up_page_heading: "Sign up to your account" } }, + { + count: 3.7, + name: "Verify the email id field With the missing domain after '@' symbol in the email address", + expect: "User should not be able to signup for the application and an error message should be displayed.", + first_name: "Demo", + last_name : "Test", + email : "demotest@", + password: "testing123", + assert: { + error_msg: "Please enter a part following '@'.", + sign_up_page_heading: "Sign up to your account" + } + }, + { + count: 3.8, + name: "Verify the email id filed With Two @ sign", + expect: "User should not be able to signup for the application and an error message should be displayed.", + first_name: "Demo", + last_name : "Test", + email : "demotest@@gmail.com", + password: "testing123", + assert: { + error_msg: "A part following '@' should not contain the symbol '@'.", + sign_up_page_heading: "Sign up to your account" + } + }, + { + count: 3.9, + name: "Verify leading dot in the email id text box is invalid.", + expect: "User should not be able to signup for the application and an error message should be displayed.", + first_name: "Demo", + last_name : "Test", + email : ".demotest@gmail.com", + password: "testing123", + assert: { + error_msg: "Email field is incorrect", + sign_up_page_heading: "Sign up to your account" + } + }, + { + count: 4.1, + name: "Verify trailing dot in the email id text box is invalid.", + expect: "User should not be able to signup for the application and an error message should be displayed.", + first_name: "Demo", + last_name : "Test", + email : "demotest@gmail.com.", + password: "testing123", + assert: { + error_msg: "'.' is used at a wrong position in 'gmail.com.'.", + sign_up_page_heading: "Sign up to your account" + } + }, + { + count: 4.2, + name: "Verify multiple dots in the email field.", + expect: "User should not be able to signup for the application and an error message should be displayed.", + first_name: "Demo", + last_name : "Test", + email : "demo..test@gmail.com", + password: "testing123", + assert: { + error_msg: "Email field is incorrect", + sign_up_page_heading: "Sign up to your account" + } + }, + { + count: 4.3, + name: "Verify the email id field With the missing username in the email address", + expect: "User should not be able to signup for the application and an error message should be displayed.", + first_name: "Demo", + last_name : "Test", + email : "@gmail.com", + password: "testing123", + assert: { + error_msg: "Please enter a part followed by '@'.", + sign_up_page_heading: "Sign up to your account" + } + }, + { + count: 4.4, + name: "Verify the email id text-field With the Missing top-level domain (.com/.net/.org/etc)", + expect: "User should not be able to signup for the application", + first_name: "Demo", + last_name : "Test", + email : "sanu"+Math.random()*100+"@gmail", + password: "testing123", + assert: "Sign up to your account" + }, ] } diff --git a/pageobjects/signup.page.js b/pageobjects/signup.page.js index 3c4af95..b8ff5dc 100644 --- a/pageobjects/signup.page.js +++ b/pageobjects/signup.page.js @@ -25,13 +25,6 @@ class SignupPage extends Page { //--------------------------------------------------------- - async refresh() - { - await browser.refresh(); - await browser.pause(2000); - } - //--------------------------------------------------------- - async formHeading(data,assert) { await expect(Sl.$(data.selectors.page_heading)).toHaveTextContaining(assert); diff --git a/specs/signup.spec.js b/specs/signup.spec.js index 87766fa..fc028ab 100644 --- a/specs/signup.spec.js +++ b/specs/signup.spec.js @@ -389,4 +389,131 @@ describe(Page.groupId(params), async () => { ); }) + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[24]; + + it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[24]; + await Page.open() + await Page.signUpAndAssertMsg( + inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, + Data, + inputs.assert.error_msg, + inputs.assert.sign_up_page_heading + ); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[25]; + + it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[25]; + await Page.open() + await Page.signUpAndAssertMsg( + inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, + Data, + inputs.assert.error_msg, + inputs.assert.sign_up_page_heading + ); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[26]; + + it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[26]; + await Page.open() + await Page.signUpAndAssertBox( + inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, + Data, + inputs.assert.error_msg, + inputs.assert.sign_up_page_heading + ); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[27]; + + it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[27]; + await Page.open() + await Page.signUpAndAssertMsg( + inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, + Data, + inputs.assert.error_msg, + inputs.assert.sign_up_page_heading + ); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[28]; + + it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[28]; + await Page.open() + await Page.signUpAndAssertBox( + inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, + Data, + inputs.assert.error_msg, + inputs.assert.sign_up_page_heading + ); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[29]; + + it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[29]; + await Page.open() + await Page.signUpAndAssertMsg( + inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, + Data, + inputs.assert.error_msg, + inputs.assert.sign_up_page_heading + ); + }) + + //------------------------------------------------------------------------------------------------------------------ + + params.test = Data.groups[0].tests[30]; + + it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[30]; + await Page.open() + await Page.signUpWithValidData( + inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, + Data, + inputs.assert + ); + }) + + }) \ No newline at end of file From 44e49a827954cc471626449777193e4ae963ff61 Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Tue, 15 Nov 2022 17:16:36 +0530 Subject: [PATCH 44/60] updated files --- data/signup.js | 73 +++++++++++++++++++++++-- pageobjects/signup.page.js | 29 +++++++++- specs/signup.spec.js | 107 +++++++++++++++++++++++++++++++++++++ 3 files changed, 204 insertions(+), 5 deletions(-) diff --git a/data/signup.js b/data/signup.js index cfad9e9..969b3cf 100644 --- a/data/signup.js +++ b/data/signup.js @@ -2,7 +2,7 @@ class Signup{ constructor() { this.selector_type = 'placeholder'; - //this.attribute_name = '' + this.attribute_name= 'type' this.params = { group:{ @@ -22,7 +22,8 @@ class Signup{ page_heading: 'h3', first_name_label_text: 'label=First Name', last_name_label_text: 'label=Last Name', - email_label_text: 'label=Email' + email_label_text: 'label=Email', + password_label_text: 'label=Password' } this.params.page = { @@ -354,8 +355,72 @@ class Signup{ password: "testing123", assert: "Sign up to your account" }, - - ] + { + count: 4.5, + name: "Verify user is able to signup by entering only space in password text-field", + expect: "User should not be able to signup for the application and an error message should be displayed.", + first_name: "Demo", + last_name : "Test", + email : "sanu"+Math.random()*100+"@gmail.com", + password: " ", + assert: { + error_msg: "Password field is required", + sign_up_page_heading: "Sign up to your account" + } + }, + { + count: 4.6, + name: "Verify that the label text 'Password' is present above the password text-field", + expect: "Label text 'Password' should be present above the last name text-field", + assert: "Password" + }, + { + count: 4.7, + name: "Verify user is able to remove password character from the password text-field", + expect: "User should be able to remove password character from the password text-field", + password: "testing123", + assert: { + text_value: "testing123", + blank_value: "" + } + }, + { + count: 4.8, + name: "Verify the password entered in password text-field is in encrypted form.", + expect: "The password entered in password text-field should be in encrypted form. ", + password: "testing123", + assert: "password" + }, + { + count: 4.9, + name: "Verify user is able to signup by entering more than 8 characters in password text-field", + expect: "User should be able to signup for the application successfully and signin page should be displayed.", + first_name: "Demo", + last_name : "Test", + email : "demotes"+Math.random()*100+"@gmail.com", + password: "testing123", + assert: "Sign in to your account" + }, + { + count: 5.1, + name: "Verify user is able to signup by entering less than 8 characters in password text-field", + expect: "User should not be able to signup for the application and an error message should be displayed", + first_name: "Demo", + last_name : "Test", + email : "demotes"+Math.random()*100+"@gmail.com", + password: "test", + assert: { + error_msg: "Password should have minimum 8 characters in length.", + sign_up_page_heading: "Sign up to your account" + } + }, + { + count: 5.2, + name: "Verify that the label text present in Sign Up button.", + expect: "Label text should be present in Sign Up button.", + assert: "Sign Up" + } + ] } ] } diff --git a/pageobjects/signup.page.js b/pageobjects/signup.page.js index b8ff5dc..cb6caa1 100644 --- a/pageobjects/signup.page.js +++ b/pageobjects/signup.page.js @@ -60,6 +60,23 @@ class SignupPage extends Page { //--------------------------------------------------------- + async passwordLabelText(data,assert) + { + await expect(Sl.$(data.selectors.password_label_text)).toHaveTextContaining(assert) + } + + //--------------------------------------------------------- + + async passwordValueAssert(password,data,assert) + { + const passwordTextField = await Sl.attr(data.selector_type, data.selectors.password) + passwordTextField.setValue(password) + await expect(passwordTextField).toHaveAttributeContaining(data.attribute_name,assert) + + } + + //--------------------------------------------------------- + async fillAndRemoveFirstName(first_name,data,assert_value,assert) { const firstNameTextField = await Sl.attr(data.selector_type, data.selectors.first_name) firstNameTextField.setValue(first_name); @@ -78,6 +95,15 @@ class SignupPage extends Page { await expect(lastNameTextField).toHaveValueContaining(assert); } + //--------------------------------------------------------- + + async fillAndRemovePassword(password,data,assert_value,assert) { + const passwordTextField = await Sl.attr(data.selector_type, data.selectors.password) + passwordTextField.setValue(password); + await expect(passwordTextField).toHaveValueContaining(assert_value); + passwordTextField.clearValue(); + await expect(passwordTextField).toHaveValueContaining(assert); + } //--------------------------------------------------------- @@ -104,7 +130,7 @@ class SignupPage extends Page { async signUpButtonText(data,assert) { - await expect(Sl.dynamic(data.selectors.submit, data.selector_type)).toHaveTextContaining(assert); + await expect(Sl.$(data.selectors.signUp)).toHaveTextContaining(assert); } //--------------------------------------------------------- @@ -177,6 +203,7 @@ class SignupPage extends Page { await this.formHeading(data,assert_signup); } + } module.exports = new SignupPage(); \ No newline at end of file diff --git a/specs/signup.spec.js b/specs/signup.spec.js index fc028ab..fb65730 100644 --- a/specs/signup.spec.js +++ b/specs/signup.spec.js @@ -515,5 +515,112 @@ describe(Page.groupId(params), async () => { ); }) + //------------------------------------------------------------------------------------------------------------------ + + params.test = Data.groups[0].tests[31]; + + it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[31]; + await Page.open() + await Page.signUpAndAssertBox( + inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, + Data, + inputs.assert.error_msg, + inputs.assert.sign_up_page_heading + ); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[32]; + + it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[32]; + await Page.open() + await Page.passwordLabelText( + Data, + inputs.assert + ); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[33]; + + it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[33]; + await Page.open() + await Page.fillAndRemovePassword( + inputs.password, + Data, + inputs.assert.text_value, + inputs.assert.blank_value + ) + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[34]; + + it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[34]; + await Page.open() + await Page.passwordValueAssert( + inputs.password, + Data, + inputs.assert + ); + }) + + //------------------------------------------------------------------------------------------------------------------ + + params.test = Data.groups[0].tests[35]; + + it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[35]; + await Page.open() + await Page.signUpWithValidData( + inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, + Data, + inputs.assert + ); + }) + + //------------------------------------------------------------------------------------------------------------------ + + params.test = Data.groups[0].tests[36]; + + it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[36]; + await Page.open() + await Page.signUpAndAssertBox( + inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, + Data, + inputs.assert.error_msg, + inputs.assert.sign_up_page_heading + ); + }) + + //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[37]; + + it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[37]; + await Page.open() + await Page.signUpButtonText( + Data, + inputs.assert + ); + }) }) \ No newline at end of file From 87b85f6d204422507df90bbe1a9f54be2aa9c6e5 Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Wed, 16 Nov 2022 12:02:39 +0530 Subject: [PATCH 45/60] Updated Test scripts and data --- data/signup.js | 300 ++++++++++++++++++++++---------------- specs/signup.spec.js | 332 +++++++++++++++++++++++-------------------- 2 files changed, 352 insertions(+), 280 deletions(-) diff --git a/data/signup.js b/data/signup.js index 969b3cf..54ce49d 100644 --- a/data/signup.js +++ b/data/signup.js @@ -38,12 +38,6 @@ class Signup{ tests: [ { count: 1.1, - name: "Verify heading of the Sign Up form.", - expect: "Heading of the sign up form should be present.", - assert : "Sign up to your account" - }, - { - count: 1.2, name: "Verify user is able to signup by leaving first name text-field blank", expect: "User should not be able to signup and an error message should be displayed", first_name: "", @@ -55,8 +49,9 @@ class Signup{ sign_up_page_heading: "Sign up to your account" } }, + { - count: 1.3, + count: 1.2, name: "Verify user is able to signup by leaving last name text-field blank", expect: "User should not be able to signup and an error message should be displayed", first_name: "Demo", @@ -68,8 +63,9 @@ class Signup{ sign_up_page_heading: "Sign up to your account" } }, + { - count: 1.4, + count: 1.3, name: "Verify user is able to signup by leaving email text-field blank", expect: "User should not be able to signup and an error message should be displayed", first_name: "Demo", @@ -81,8 +77,9 @@ class Signup{ sign_up_page_heading: "Sign up to your account" } }, + { - count: 1.5, + count: 1.4, name: "Verify user is able to signup by leaving password text-field blank", expect: "User should not be able to signup and an error message should be displayed", first_name: "Demo", @@ -94,32 +91,9 @@ class Signup{ sign_up_page_heading: "Sign up to your account" } }, + { - count: 1.6, - name: "Verify that the placeholder text is present in first name text-field", - expect: "Placeholder text should be present in the first name text-field.", - assert: "First Name" - }, - { - count: 1.7, - name: "Verify that the placeholder text is present in last name text-field", - expect: "Placeholder text should be present in the last name text-field.", - assert: "Last Name" - }, - { - count: 1.8, - name: "Verify that the placeholder text is present in email text-field", - expect: "Placeholder text should be present in the email text field.", - assert: "Work email address" - }, - { - count: 1.9, - name: "Verify that the placeholder text is present in password text-field", - expect: "Placeholder text should be present in the password text field.", - assert: "Password" - }, - { - count: 2.1, + count: 1.5, name: "Verify user is able to signup by filling all the mandatory fields", expect: "User should be able to signup for the application successfully and signin page should be displayed.", first_name: "Demo", @@ -128,8 +102,9 @@ class Signup{ password: "testing123", assert: "Sign in to your account" }, + { - count: 2.2, + count: 1.6, name: "Verify user is able to signup by leaving all the mandatory fields blank", expect: "User should not be able to signup and an error message should be displayed", assert: { @@ -137,8 +112,9 @@ class Signup{ sign_up_page_heading: "Sign up to your account" } }, + { - count: 2.3, + count: 1.7, name: "Verify user is able to signup by entering alphabetic characters in first name text-field", expect: "User should be able to signup for the application successfully and signin page should be displayed.", first_name: "Demo", @@ -147,8 +123,9 @@ class Signup{ password: "testing123", assert: "Sign in to your account" }, + { - count: 2.4, + count: 1.8, name: "Verify user is able to signup by entering only space in first name text-field", expect: "User should not be able to signup for the application and an error message should be displayed.", first_name: " ", @@ -160,24 +137,9 @@ class Signup{ sign_up_page_heading: "Sign up to your account" } }, + { - count: 2.5, - name: "Verify that the label text 'First Name' is present above the first name text-field", - expect: "Label text 'First Name' should be present above the first name text-field", - assert: "First Name" - }, - { - count: 2.6, - name: "Verify user is able to remove text from the first name text-field", - expect: "User should be able to remove text from the first name text-field", - first_name: "Demo", - assert: { - text_value: "Demo", - blank_value: "" - } - }, - { - count: 2.7, + count: 1.9, name: "Verify user is able to signup by entering alphabetic characters in last name text-field", expect: "User should be able to signup for the application successfully and signin page should be displayed.", first_name: "Demo", @@ -186,8 +148,9 @@ class Signup{ password: "testing123", assert: "Sign in to your account" }, + { - count: 2.8, + count: 2.1, name: "Verify user is able to signup by entering only space in last name text-field", expect: "User should not be able to signup for the application and an error message should be displayed.", first_name: "Demo", @@ -199,30 +162,9 @@ class Signup{ sign_up_page_heading: "Sign up to your account" } }, + { - count: 2.9, - name: "Verify that the label text 'Last Name' is present above the last name text-field", - expect: "Label text 'Last Name' should be present above the last name text-field", - assert: "Last Name" - }, - { - count: 3.1, - name: "Verify user is able to remove text from the last name text-field", - expect: "User should be able to remove text from the last name text-field", - last_name: "Test", - assert: { - text_value: "Test", - blank_value: "" - } - }, - { - count: 3.2, - name: "Verify that the label text 'Email' is present above the email text-field", - expect: "Label text 'Email' should be present above the email text-field", - assert: "Email" - }, - { - count: 3.3, + count: 2.2, name: "Verify user is able to signup by entering only space in email text-field", expect: "User should not be able to signup for the application and an error message should be displayed.", first_name: "Demo", @@ -234,8 +176,9 @@ class Signup{ sign_up_page_heading: "Sign up to your account" } }, + { - count: 3.4, + count: 2.3, name: "Verify user is able to signup by entering valid email in email text-field", expect: "User should be able to signup for the application successfully and signin page should be displayed.", first_name: "Demo", @@ -245,7 +188,7 @@ class Signup{ assert: "Sign in to your account" }, { - count: 3.5, + count: 2.4, name: "Verify if the email field accepts '+' sign in the email address.", expect: "User should be able to signup for the application successfully and signin page should be displayed.", first_name: "Demo", @@ -255,7 +198,7 @@ class Signup{ assert: "Sign in to your account" }, { - count: 3.6, + count: 2.5, name: "Verify the email id field With the missing '@' sign and domain in the email address", expect: "User should not be able to signup for the application and an error message should be displayed.", first_name: "Demo", @@ -267,8 +210,9 @@ class Signup{ sign_up_page_heading: "Sign up to your account" } }, + { - count: 3.7, + count: 2.6, name: "Verify the email id field With the missing domain after '@' symbol in the email address", expect: "User should not be able to signup for the application and an error message should be displayed.", first_name: "Demo", @@ -280,9 +224,10 @@ class Signup{ sign_up_page_heading: "Sign up to your account" } }, + { - count: 3.8, - name: "Verify the email id filed With Two @ sign", + count: 2.7, + name: "Verify the email id field With Two @ sign", expect: "User should not be able to signup for the application and an error message should be displayed.", first_name: "Demo", last_name : "Test", @@ -293,8 +238,9 @@ class Signup{ sign_up_page_heading: "Sign up to your account" } }, + { - count: 3.9, + count: 2.8, name: "Verify leading dot in the email id text box is invalid.", expect: "User should not be able to signup for the application and an error message should be displayed.", first_name: "Demo", @@ -306,8 +252,9 @@ class Signup{ sign_up_page_heading: "Sign up to your account" } }, + { - count: 4.1, + count: 2.9, name: "Verify trailing dot in the email id text box is invalid.", expect: "User should not be able to signup for the application and an error message should be displayed.", first_name: "Demo", @@ -319,8 +266,9 @@ class Signup{ sign_up_page_heading: "Sign up to your account" } }, + { - count: 4.2, + count: 3.1, name: "Verify multiple dots in the email field.", expect: "User should not be able to signup for the application and an error message should be displayed.", first_name: "Demo", @@ -332,8 +280,9 @@ class Signup{ sign_up_page_heading: "Sign up to your account" } }, + { - count: 4.3, + count: 3.2, name: "Verify the email id field With the missing username in the email address", expect: "User should not be able to signup for the application and an error message should be displayed.", first_name: "Demo", @@ -345,18 +294,9 @@ class Signup{ sign_up_page_heading: "Sign up to your account" } }, + { - count: 4.4, - name: "Verify the email id text-field With the Missing top-level domain (.com/.net/.org/etc)", - expect: "User should not be able to signup for the application", - first_name: "Demo", - last_name : "Test", - email : "sanu"+Math.random()*100+"@gmail", - password: "testing123", - assert: "Sign up to your account" - }, - { - count: 4.5, + count: 3.3, name: "Verify user is able to signup by entering only space in password text-field", expect: "User should not be able to signup for the application and an error message should be displayed.", first_name: "Demo", @@ -368,31 +308,9 @@ class Signup{ sign_up_page_heading: "Sign up to your account" } }, + { - count: 4.6, - name: "Verify that the label text 'Password' is present above the password text-field", - expect: "Label text 'Password' should be present above the last name text-field", - assert: "Password" - }, - { - count: 4.7, - name: "Verify user is able to remove password character from the password text-field", - expect: "User should be able to remove password character from the password text-field", - password: "testing123", - assert: { - text_value: "testing123", - blank_value: "" - } - }, - { - count: 4.8, - name: "Verify the password entered in password text-field is in encrypted form.", - expect: "The password entered in password text-field should be in encrypted form. ", - password: "testing123", - assert: "password" - }, - { - count: 4.9, + count: 3.4, name: "Verify user is able to signup by entering more than 8 characters in password text-field", expect: "User should be able to signup for the application successfully and signin page should be displayed.", first_name: "Demo", @@ -401,8 +319,9 @@ class Signup{ password: "testing123", assert: "Sign in to your account" }, + { - count: 5.1, + count: 3.5, name: "Verify user is able to signup by entering less than 8 characters in password text-field", expect: "User should not be able to signup for the application and an error message should be displayed", first_name: "Demo", @@ -413,14 +332,145 @@ class Signup{ error_msg: "Password should have minimum 8 characters in length.", sign_up_page_heading: "Sign up to your account" } + } + ] + }, + { + count: 2, + name: "UI", + tests: [ + { + count: 1.1, + name: "Verify heading of the Sign Up form.", + expect: "Heading of the sign up form should be present.", + assert : "Sign up to your account" + }, + + { + count: 1.2, + name: "Verify that the placeholder text is present in first name text-field", + expect: "Placeholder text should be present in the first name text-field.", + assert: "First Name" + }, + + { + count: 1.3, + name: "Verify that the placeholder text is present in last name text-field", + expect: "Placeholder text should be present in the last name text-field.", + assert: "Last Name" + }, + + { + count: 1.4, + name: "Verify that the placeholder text is present in email text-field", + expect: "Placeholder text should be present in the email text field.", + assert: "Work email address" + }, + + { + count: 1.5, + name: "Verify that the placeholder text is present in password text-field", + expect: "Placeholder text should be present in the password text field.", + assert: "Password" }, + { - count: 5.2, + count: 1.6, + name: "Verify that the label text 'First Name' is present above the first name text-field", + expect: "Label text 'First Name' should be present above the first name text-field", + assert: "First Name" + }, + + { + count: 1.7, + name: "Verify that the label text 'Last Name' is present above the last name text-field", + expect: "Label text 'Last Name' should be present above the last name text-field", + assert: "Last Name" + }, + + { + count: 1.8, + name: "Verify that the label text 'Email' is present above the email text-field", + expect: "Label text 'Email' should be present above the email text-field", + assert: "Email" + }, + + { + count: 1.9, + name: "Verify that the label text 'Password' is present above the password text-field", + expect: "Label text 'Password' should be present above the last name text-field", + assert: "Password" + }, + + { + count: 2.1, name: "Verify that the label text present in Sign Up button.", expect: "Label text should be present in Sign Up button.", assert: "Sign Up" } ] + }, + { + count: 3, + name: "Functionality", + tests: [ + { + count: 1.1, + name: "Verify user is able to remove text from the first name text-field", + expect: "User should be able to remove text from the first name text-field", + first_name: "Demo", + assert: { + text_value: "Demo", + blank_value: "" + } + }, + + { + count: 1.2, + name: "Verify user is able to remove text from the last name text-field", + expect: "User should be able to remove text from the last name text-field", + last_name: "Test", + assert: { + text_value: "Test", + blank_value: "" + } + }, + + { + count: 1.3, + name: "Verify user is able to remove password characters from the password text-field", + expect: "User should be able to remove password characters from the password text-field", + password: "testing123", + assert: { + text_value: "testing123", + blank_value: "" + } + }, + + { + count: 1.4, + name: "Verify the password entered in password text-field is in encrypted form.", + expect: "The password entered in password text-field should be in encrypted form. ", + password: "testing123", + assert: "password" + } + ] + }, + { + count: 4, + name: "Failed", + tests: [ + { + count: 1.1, + name: "Verify the email id text-field With the Missing top-level domain (.com/.net/.org/etc)", + expect: "User should not be able to signup for the application", + first_name: "Demo", + last_name : "Test", + email : "sanu"+Math.random()*100+"@gmail", + password: "testing123", + assert: "Sign up to your account" + } + ] } ] } diff --git a/specs/signup.spec.js b/specs/signup.spec.js index fb65730..c76b1b5 100644 --- a/specs/signup.spec.js +++ b/specs/signup.spec.js @@ -13,15 +13,22 @@ describe(Page.groupId(params), async () => { console.log(color.red('params.test'), params.test); it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[0]; await Page.open() - await Page.formHeading( + await Page.signUpAndAssertMsg( + inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, Data, - inputs.assert - ) + inputs.assert.error_msg, + inputs.assert.sign_up_page_heading + ); }) //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[1]; it(Page.testId(params), async () => { @@ -58,6 +65,7 @@ describe(Page.groupId(params), async () => { }) //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[3]; it(Page.testId(params), async () => { @@ -76,20 +84,20 @@ describe(Page.groupId(params), async () => { }) //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[4]; it(Page.testId(params), async () => { inputs = Data.groups[0].tests[4]; await Page.open() - await Page.signUpAndAssertMsg( + await Page.signUpWithValidData( inputs.first_name, inputs.last_name, inputs.email, inputs.password, Data, - inputs.assert.error_msg, - inputs.assert.sign_up_page_heading + inputs.assert ); }) @@ -100,76 +108,100 @@ describe(Page.groupId(params), async () => { inputs = Data.groups[0].tests[5]; await Page.open() - await Page.firstNamePlaceholderText( + await Page.signUpWithBlankTextfields( Data, - inputs.assert + inputs.assert.error_msg, + inputs.assert.sign_up_page_heading ); }) //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[6]; it(Page.testId(params), async () => { inputs = Data.groups[0].tests[6]; await Page.open() - await Page.lastNamePlaceholderText( + await Page.signUpWithValidData( + inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, Data, inputs.assert ); }) //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[7]; it(Page.testId(params), async () => { inputs = Data.groups[0].tests[7]; await Page.open() - await Page.emailPlaceholderText( + await Page.signUpAndAssertBox( + inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, Data, - inputs.assert + inputs.assert.error_msg, + inputs.assert.sign_up_page_heading ); }) //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[8]; it(Page.testId(params), async () => { inputs = Data.groups[0].tests[8]; await Page.open() - await Page.passwordPlaceholderText( + await Page.signUpWithValidData( + inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, Data, inputs.assert ); }) //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[9]; it(Page.testId(params), async () => { inputs = Data.groups[0].tests[9]; await Page.open() - await Page.signUpWithValidData( + await Page.signUpAndAssertBox( inputs.first_name, inputs.last_name, inputs.email, inputs.password, Data, - inputs.assert + inputs.assert.error_msg, + inputs.assert.sign_up_page_heading ); }) //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[10]; it(Page.testId(params), async () => { inputs = Data.groups[0].tests[10]; await Page.open() - await Page.signUpWithBlankTextfields( + await Page.signUpAndAssertMsg( + inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, Data, inputs.assert.error_msg, inputs.assert.sign_up_page_heading @@ -202,14 +234,13 @@ describe(Page.groupId(params), async () => { inputs = Data.groups[0].tests[12]; await Page.open() - await Page.signUpAndAssertBox( + await Page.signUpWithValidData( inputs.first_name, inputs.last_name, inputs.email, inputs.password, Data, - inputs.assert.error_msg, - inputs.assert.sign_up_page_heading + inputs.assert ); }) @@ -220,9 +251,14 @@ describe(Page.groupId(params), async () => { inputs = Data.groups[0].tests[13]; await Page.open() - await Page.firstNameLabelText( + await Page.signUpAndAssertMsg( + inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, Data, - inputs.assert + inputs.assert.error_msg, + inputs.assert.sign_up_page_heading ); }) @@ -230,36 +266,39 @@ describe(Page.groupId(params), async () => { params.test = Data.groups[0].tests[14]; it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[14]; await Page.open() - await Page.fillAndRemoveFirstName( + await Page.signUpAndAssertMsg( inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, Data, - inputs.assert.text_value, - inputs.assert.blank_value - ) + inputs.assert.error_msg, + inputs.assert.sign_up_page_heading + ); }) //------------------------------------------------------------------------------------------------------------------ - params.test = Data.groups[0].tests[15]; it(Page.testId(params), async () => { inputs = Data.groups[0].tests[15]; await Page.open() - await Page.signUpWithValidData( + await Page.signUpAndAssertMsg( inputs.first_name, inputs.last_name, inputs.email, inputs.password, Data, - inputs.assert + inputs.assert.error_msg, + inputs.assert.sign_up_page_heading ); }) //------------------------------------------------------------------------------------------------------------------ - params.test = Data.groups[0].tests[16]; it(Page.testId(params), async () => { @@ -284,9 +323,14 @@ describe(Page.groupId(params), async () => { inputs = Data.groups[0].tests[17]; await Page.open() - await Page.lastNameLabelText( + await Page.signUpAndAssertMsg( + inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, Data, - inputs.assert + inputs.assert.error_msg, + inputs.assert.sign_up_page_heading ); }) @@ -294,14 +338,18 @@ describe(Page.groupId(params), async () => { params.test = Data.groups[0].tests[18]; it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[18]; await Page.open() - await Page.fillAndRemoveLastName( + await Page.signUpAndAssertBox( + inputs.first_name, inputs.last_name, + inputs.email, + inputs.password, Data, - inputs.assert.text_value, - inputs.assert.blank_value - ) + inputs.assert.error_msg, + inputs.assert.sign_up_page_heading + ); }) //------------------------------------------------------------------------------------------------------------------ @@ -311,20 +359,26 @@ describe(Page.groupId(params), async () => { inputs = Data.groups[0].tests[19]; await Page.open() - await Page.emailLabelText( + await Page.signUpAndAssertMsg( + inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, Data, - inputs.assert + inputs.assert.error_msg, + inputs.assert.sign_up_page_heading ); }) //------------------------------------------------------------------------------------------------------------------ + params.test = Data.groups[0].tests[20]; it(Page.testId(params), async () => { inputs = Data.groups[0].tests[20]; await Page.open() - await Page.signUpAndAssertMsg( + await Page.signUpAndAssertBox( inputs.first_name, inputs.last_name, inputs.email, @@ -361,155 +415,123 @@ describe(Page.groupId(params), async () => { inputs = Data.groups[0].tests[22]; await Page.open() - await Page.signUpWithValidData( + await Page.signUpAndAssertBox( inputs.first_name, inputs.last_name, inputs.email, inputs.password, Data, - inputs.assert + inputs.assert.error_msg, + inputs.assert.sign_up_page_heading ); }) //------------------------------------------------------------------------------------------------------------------ - params.test = Data.groups[0].tests[23]; - it(Page.testId(params), async () => { + params.group = Data.groups[1]; + params.test = Data.groups[1].tests[0]; - inputs = Data.groups[0].tests[23]; + it(Page.testId(params), async () => { + inputs = Data.groups[1].tests[0]; await Page.open() - await Page.signUpAndAssertMsg( - inputs.first_name, - inputs.last_name, - inputs.email, - inputs.password, + await Page.formHeading( Data, - inputs.assert.error_msg, - inputs.assert.sign_up_page_heading - ); + inputs.assert + ) }) //------------------------------------------------------------------------------------------------------------------ - params.test = Data.groups[0].tests[24]; + + params.test = Data.groups[1].tests[1]; it(Page.testId(params), async () => { - inputs = Data.groups[0].tests[24]; + inputs = Data.groups[1].tests[1]; await Page.open() - await Page.signUpAndAssertMsg( - inputs.first_name, - inputs.last_name, - inputs.email, - inputs.password, + await Page.firstNamePlaceholderText( Data, - inputs.assert.error_msg, - inputs.assert.sign_up_page_heading + inputs.assert ); }) //------------------------------------------------------------------------------------------------------------------ - params.test = Data.groups[0].tests[25]; + params.test = Data.groups[1].tests[2]; it(Page.testId(params), async () => { - inputs = Data.groups[0].tests[25]; + inputs = Data.groups[1].tests[2]; await Page.open() - await Page.signUpAndAssertMsg( - inputs.first_name, - inputs.last_name, - inputs.email, - inputs.password, + await Page.lastNamePlaceholderText( Data, - inputs.assert.error_msg, - inputs.assert.sign_up_page_heading + inputs.assert ); }) //------------------------------------------------------------------------------------------------------------------ - params.test = Data.groups[0].tests[26]; + + params.test = Data.groups[1].tests[3]; it(Page.testId(params), async () => { - inputs = Data.groups[0].tests[26]; + inputs = Data.groups[1].tests[3]; await Page.open() - await Page.signUpAndAssertBox( - inputs.first_name, - inputs.last_name, - inputs.email, - inputs.password, + await Page.emailPlaceholderText( Data, - inputs.assert.error_msg, - inputs.assert.sign_up_page_heading + inputs.assert ); }) //------------------------------------------------------------------------------------------------------------------ - params.test = Data.groups[0].tests[27]; + + params.test = Data.groups[1].tests[4]; it(Page.testId(params), async () => { - inputs = Data.groups[0].tests[27]; + inputs = Data.groups[1].tests[4]; await Page.open() - await Page.signUpAndAssertMsg( - inputs.first_name, - inputs.last_name, - inputs.email, - inputs.password, + await Page.passwordPlaceholderText( Data, - inputs.assert.error_msg, - inputs.assert.sign_up_page_heading + inputs.assert ); }) //------------------------------------------------------------------------------------------------------------------ - params.test = Data.groups[0].tests[28]; + + params.test = Data.groups[1].tests[5]; it(Page.testId(params), async () => { - inputs = Data.groups[0].tests[28]; + inputs = Data.groups[1].tests[5]; await Page.open() - await Page.signUpAndAssertBox( - inputs.first_name, - inputs.last_name, - inputs.email, - inputs.password, + await Page.firstNameLabelText( Data, - inputs.assert.error_msg, - inputs.assert.sign_up_page_heading + inputs.assert ); }) //------------------------------------------------------------------------------------------------------------------ - params.test = Data.groups[0].tests[29]; + + params.test = Data.groups[1].tests[6]; it(Page.testId(params), async () => { - inputs = Data.groups[0].tests[29]; + inputs = Data.groups[1].tests[6]; await Page.open() - await Page.signUpAndAssertMsg( - inputs.first_name, - inputs.last_name, - inputs.email, - inputs.password, + await Page.lastNameLabelText( Data, - inputs.assert.error_msg, - inputs.assert.sign_up_page_heading + inputs.assert ); }) //------------------------------------------------------------------------------------------------------------------ - params.test = Data.groups[0].tests[30]; + params.test = Data.groups[1].tests[7]; it(Page.testId(params), async () => { - inputs = Data.groups[0].tests[30]; + inputs = Data.groups[1].tests[7]; await Page.open() - await Page.signUpWithValidData( - inputs.first_name, - inputs.last_name, - inputs.email, - inputs.password, + await Page.emailLabelText( Data, inputs.assert ); @@ -517,44 +539,41 @@ describe(Page.groupId(params), async () => { //------------------------------------------------------------------------------------------------------------------ - params.test = Data.groups[0].tests[31]; + params.test = Data.groups[1].tests[8]; it(Page.testId(params), async () => { - inputs = Data.groups[0].tests[31]; + inputs = Data.groups[1].tests[8]; await Page.open() - await Page.signUpAndAssertBox( - inputs.first_name, - inputs.last_name, - inputs.email, - inputs.password, + await Page.passwordLabelText( Data, - inputs.assert.error_msg, - inputs.assert.sign_up_page_heading + inputs.assert ); }) //------------------------------------------------------------------------------------------------------------------ - params.test = Data.groups[0].tests[32]; - it(Page.testId(params), async () => { + params.test = Data.groups[1].tests[9]; - inputs = Data.groups[0].tests[32]; + it(Page.testId(params), async () => { + inputs = Data.groups[1].tests[9]; await Page.open() - await Page.passwordLabelText( + await Page.signUpButtonText( Data, inputs.assert ); }) //------------------------------------------------------------------------------------------------------------------ - params.test = Data.groups[0].tests[33]; + + params.group = Data.groups[2]; + params.test = Data.groups[2].tests[0]; it(Page.testId(params), async () => { - inputs = Data.groups[0].tests[33]; + inputs = Data.groups[2].tests[0]; await Page.open() - await Page.fillAndRemovePassword( - inputs.password, + await Page.fillAndRemoveFirstName( + inputs.first_name, Data, inputs.assert.text_value, inputs.assert.blank_value @@ -562,65 +581,68 @@ describe(Page.groupId(params), async () => { }) //------------------------------------------------------------------------------------------------------------------ - params.test = Data.groups[0].tests[34]; + + params.test = Data.groups[2].tests[1]; it(Page.testId(params), async () => { - inputs = Data.groups[0].tests[34]; + inputs = Data.groups[2].tests[1]; await Page.open() - await Page.passwordValueAssert( - inputs.password, + await Page.fillAndRemoveLastName( + inputs.last_name, Data, - inputs.assert - ); + inputs.assert.text_value, + inputs.assert.blank_value + ) }) //------------------------------------------------------------------------------------------------------------------ - params.test = Data.groups[0].tests[35]; + params.test = Data.groups[2].tests[2]; it(Page.testId(params), async () => { - - inputs = Data.groups[0].tests[35]; + inputs = Data.groups[2].tests[2]; await Page.open() - await Page.signUpWithValidData( - inputs.first_name, - inputs.last_name, - inputs.email, + await Page.fillAndRemovePassword( inputs.password, Data, - inputs.assert - ); + inputs.assert.text_value, + inputs.assert.blank_value + ) }) //------------------------------------------------------------------------------------------------------------------ - params.test = Data.groups[0].tests[36]; + params.test = Data.groups[2].tests[3]; it(Page.testId(params), async () => { - - inputs = Data.groups[0].tests[36]; + inputs = Data.groups[2].tests[3]; await Page.open() - await Page.signUpAndAssertBox( - inputs.first_name, - inputs.last_name, - inputs.email, + await Page.passwordValueAssert( inputs.password, Data, - inputs.assert.error_msg, - inputs.assert.sign_up_page_heading + inputs.assert ); }) //------------------------------------------------------------------------------------------------------------------ - params.test = Data.groups[0].tests[37]; + + params.group = Data.groups[3]; + params.test = Data.groups[3].tests[0]; it(Page.testId(params), async () => { - inputs = Data.groups[0].tests[37]; + + inputs = Data.groups[3].tests[0]; await Page.open() - await Page.signUpButtonText( + await Page.signUpWithValidData( + inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, Data, inputs.assert ); }) + //------------------------------------------------------------------------------------------------------------------ + }) \ No newline at end of file From de37a0256995c400a34d47baee6c9eafd5fd7ee6 Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Wed, 16 Nov 2022 12:36:02 +0530 Subject: [PATCH 46/60] Sign Up: Updated Test Scripts, POM & Data Files --- data/signup.js | 2 +- pageobjects/signin.page.js | 140 ++++++++++++++++----------------- pageobjects/signup.page.js | 153 ++++++++++++++++++------------------- 3 files changed, 142 insertions(+), 153 deletions(-) diff --git a/data/signup.js b/data/signup.js index 54ce49d..a06f1ab 100644 --- a/data/signup.js +++ b/data/signup.js @@ -190,7 +190,7 @@ class Signup{ { count: 2.4, name: "Verify if the email field accepts '+' sign in the email address.", - expect: "User should be able to signup for the application successfully and signin page should be displayed.", + expect: "User should be able to signup for the application successfully,if there is '+' sign in the email address and signin page should be displayed.", first_name: "Demo", last_name : "Test", email : "demo+1tes"+Math.random()*100+"@gmail.com", diff --git a/pageobjects/signin.page.js b/pageobjects/signin.page.js index a22c30e..096c8c3 100644 --- a/pageobjects/signin.page.js +++ b/pageobjects/signin.page.js @@ -15,44 +15,52 @@ class SigninPage extends Page { //--------------------------------------------------------- - async open (url=null) { - if(url) - { - this.params.page.url = url - } - return super.open(this.params.page.url); + async clickSignIn(data) + { + await Sl.dynamic(data.selectors.submit, data.selector_type).click(); } //--------------------------------------------------------- - async refresh() + async eyeButton(password,data,assert,assert_text) { - await browser.refresh(); + const passwordTextField = await Sl.dynamic(data.selectors.password, data.selector_type); + passwordTextField.setValue(password); + await expect(passwordTextField).toHaveAttributeContaining(data.attribute_name,assert) await browser.pause(2000); + await Sl.icon(data.selectors.eye_icon).click(); + await expect(passwordTextField).toHaveAttributeContaining(data.attribute_name,assert_text) } //--------------------------------------------------------- - async pageHeading(data,assert) + async fillAndRemoveEmail(email,data,assert_value,assert) { - await expect(Sl.$(data.selectors.page_heading)).toHaveTextContaining(assert); + const emailTextField = await Sl.dynamic(data.selectors.email, data.selector_type); + emailTextField.setValue(email); + await expect(emailTextField).toHaveValueContaining(assert_value); + emailTextField.clearValue(); + await expect(emailTextField).toHaveValueContaining(assert); } //--------------------------------------------------------- - async pageSubHeading(data,assert) - { - await expect(Sl.$(data.selectors.page_subheading)).toHaveTextContaining(assert); + async fillAndRemovePassword(password,data,assert_value,assert) { + const passwordTextField = await Sl.dynamic(data.selectors.password, data.selector_type); + passwordTextField.setValue(password); + await expect(passwordTextField).toHaveValueContaining(assert_value); + passwordTextField.clearValue(); + await expect(passwordTextField).toHaveValueContaining(assert); } //--------------------------------------------------------- - async heading(data,assert) + async fillAndSignIn(email,password,data) { - await expect(Sl.$(data.selectors.heading)).toHaveTextContaining(assert); + await this.fillForm(email,password,data) + await this.clickSignIn(data) } - //--------------------------------------------------------- async fillForm(email,password,data) @@ -63,73 +71,73 @@ class SigninPage extends Page { //--------------------------------------------------------- - async fillAndRemoveEmail(email,data,assert_value,assert) + async forgotPassword(data,assert) { - const emailTextField = await Sl.dynamic(data.selectors.email, data.selector_type); - emailTextField.setValue(email); - await expect(emailTextField).toHaveValueContaining(assert_value); - emailTextField.clearValue(); - await expect(emailTextField).toHaveValueContaining(assert); - + await Sl.$(data.selectors.forgot_password).click(); + await this.pageHeading(data,assert); } //--------------------------------------------------------- - async fillAndRemovePassword(password,data,assert_value,assert) { - const passwordTextField = await Sl.dynamic(data.selectors.password, data.selector_type); - passwordTextField.setValue(password); - await expect(passwordTextField).toHaveValueContaining(assert_value); - passwordTextField.clearValue(); - await expect(passwordTextField).toHaveValueContaining(assert); + async heading(data,assert) + { + await expect(Sl.$(data.selectors.heading)).toHaveTextContaining(assert); } - //-------------------------------------------------------- + //--------------------------------------------------------- - async signInButtonText(data,assert) + async linkText(data,assert) { - await expect(Sl.dynamic(data.selectors.submit, data.selector_type)).toHaveTextContaining(assert); + await expect(Sl.$(data.selectors.link_text)).toHaveTextContaining(assert); } //--------------------------------------------------------- - async clickSignIn(data) + async moveAndLogout(data) { - await Sl.dynamic(data.selectors.submit, data.selector_type).click(); + await Sl.role(data.selectors.menu_item).moveTo(); + await Sl.$(data.selectors.logout_button).click(); } //--------------------------------------------------------- - async fillAndSignIn(email,password,data) - { - await this.fillForm(email,password,data) - await this.clickSignIn(data) + async open (url=null) { + if(url) + { + this.params.page.url = url + } + return super.open(this.params.page.url); + } + //--------------------------------------------------------- + + async pageHeading(data,assert) + { + await expect(Sl.$(data.selectors.page_heading)).toHaveTextContaining(assert); } //--------------------------------------------------------- - async signInAndAssert(email,password,data,assert,assert_signin) + async pageSubHeading(data,assert) { - await this.fillAndSignIn(email,password,data) - await expect(Sl.role(data.selectors.alert_box)).toHaveTextContaining(assert); - await this.pageHeading(data,assert_signin); + await expect(Sl.$(data.selectors.page_subheading)).toHaveTextContaining(assert); } //--------------------------------------------------------- - async moveAndLogout(data) + async refresh() { - await Sl.role(data.selectors.menu_item).moveTo(); - await Sl.$(data.selectors.logout_button).click(); + await browser.refresh(); + await browser.pause(2000); } //--------------------------------------------------------- - async signInAndSignOut(email,password,data,assert) + async signInAndAssert(email,password,data,assert,assert_signin) { await this.fillAndSignIn(email,password,data) - await this.heading(data,assert) - await this.moveAndLogout(data); + await expect(Sl.role(data.selectors.alert_box)).toHaveTextContaining(assert); + await this.pageHeading(data,assert_signin); } //--------------------------------------------------------- @@ -144,52 +152,36 @@ class SigninPage extends Page { await browser.forward(); await this.heading(data,assert); await this.moveAndLogout(data); - } //--------------------------------------------------------- - async signOutAndBrowseBack(email,password,data,assert,assert_signin) + async signInAndSignOut(email,password,data,assert) { await this.fillAndSignIn(email,password,data) await this.heading(data,assert) await this.moveAndLogout(data); - await browser.back(); - await this.pageHeading(data,assert_signin); - } - //--------------------------------------------------------- + //-------------------------------------------------------- - async forgotPassword(data,assert) + async signInButtonText(data,assert) { - await Sl.$(data.selectors.forgot_password).click(); - await this.pageHeading(data,assert); + await expect(Sl.dynamic(data.selectors.submit, data.selector_type)).toHaveTextContaining(assert); } //--------------------------------------------------------- - async eyeButton(password,data,assert,assert_text) + async signOutAndBrowseBack(email,password,data,assert,assert_signin) { - const passwordTextField = await Sl.dynamic(data.selectors.password, data.selector_type); - passwordTextField.setValue(password); - await expect(passwordTextField).toHaveAttributeContaining(data.attribute_name,assert) - await browser.pause(2000); - await Sl.icon(data.selectors.eye_icon).click(); - await expect(passwordTextField).toHaveAttributeContaining(data.attribute_name,assert_text) - - + await this.fillAndSignIn(email,password,data) + await this.heading(data,assert) + await this.moveAndLogout(data); + await browser.back(); + await this.pageHeading(data,assert_signin); } //--------------------------------------------------------- - - async linkText(data,assert) - { - await expect(Sl.$(data.selectors.link_text)).toHaveTextContaining(assert); - - } } - module.exports = new SigninPage(); - //---------------------------------------------------------------------------------------------------------------------- \ No newline at end of file diff --git a/pageobjects/signup.page.js b/pageobjects/signup.page.js index cb6caa1..d208965 100644 --- a/pageobjects/signup.page.js +++ b/pageobjects/signup.page.js @@ -15,40 +15,12 @@ class SignupPage extends Page { //--------------------------------------------------------- - async open (url=null) { - if(url) - { - this.params.page.url = url - } - return super.open(this.params.page.url); - } - - //--------------------------------------------------------- - - async formHeading(data,assert) - { - await expect(Sl.$(data.selectors.page_heading)).toHaveTextContaining(assert); - } - - //--------------------------------------------------------- - - async firstNamePlaceholderText(data,assert) - { - await expect(Sl.attr(data.selector_type, data.selectors.first_name)).toHaveAttributeContaining(data.selector_type,assert) - } - - //--------------------------------------------------------- - - async firstNameLabelText(data,assert) - { - await expect(Sl.$(data.selectors.first_name_label_text)).toHaveTextContaining(assert) - } - - //--------------------------------------------------------- - - async lastNameLabelText(data,assert) + async clickSignUp(data) { - await expect(Sl.$(data.selectors.last_name_label_text)).toHaveTextContaining(assert) + const button = await Sl.$(data.selectors.signUp); + button.click(); + await browser.pause(2000); + button.click(); } //--------------------------------------------------------- @@ -60,19 +32,9 @@ class SignupPage extends Page { //--------------------------------------------------------- - async passwordLabelText(data,assert) - { - await expect(Sl.$(data.selectors.password_label_text)).toHaveTextContaining(assert) - } - - //--------------------------------------------------------- - - async passwordValueAssert(password,data,assert) + async emailPlaceholderText(data,assert) { - const passwordTextField = await Sl.attr(data.selector_type, data.selectors.password) - passwordTextField.setValue(password) - await expect(passwordTextField).toHaveAttributeContaining(data.attribute_name,assert) - + await expect(Sl.attr(data.selector_type, data.selectors.email)).toHaveAttributeContaining(data.selector_type,assert) } //--------------------------------------------------------- @@ -107,72 +69,91 @@ class SignupPage extends Page { //--------------------------------------------------------- - async lastNamePlaceholderText(data,assert) + async fillAndSignUp(first_name,last_name,email,password,data) { - await expect(Sl.attr(data.selector_type, data.selectors.last_name)).toHaveAttributeContaining(data.selector_type,assert) + await this.fillForm(first_name,last_name,email,password,data) + await this.clickSignUp(data) + await browser.pause(2000); + } //--------------------------------------------------------- - async emailPlaceholderText(data,assert) + async fillForm(first_name,last_name,email,password,data) { - await expect(Sl.attr(data.selector_type, data.selectors.email)).toHaveAttributeContaining(data.selector_type,assert) + await Sl.attr(data.selector_type, data.selectors.first_name).setValue(first_name); + await Sl.attr(data.selector_type, data.selectors.last_name).setValue(last_name); + await browser.pause(1000); + await Sl.attr(data.selector_type, data.selectors.email).setValue(email); + await Sl.attr(data.selector_type, data.selectors.password).setValue(password); } //--------------------------------------------------------- - async passwordPlaceholderText(data,assert) + async firstNameLabelText(data,assert) { - await expect(Sl.attr(data.selector_type, data.selectors.password)).toHaveAttributeContaining(data.selector_type,assert) + await expect(Sl.$(data.selectors.first_name_label_text)).toHaveTextContaining(assert) } - //-------------------------------------------------------- + //--------------------------------------------------------- - async signUpButtonText(data,assert) + async firstNamePlaceholderText(data,assert) { - await expect(Sl.$(data.selectors.signUp)).toHaveTextContaining(assert); + await expect(Sl.attr(data.selector_type, data.selectors.first_name)).toHaveAttributeContaining(data.selector_type,assert) } //--------------------------------------------------------- - async clickSignUp(data) + async formHeading(data,assert) { - const button = await Sl.$(data.selectors.signUp); - //await browser.pause(2000); - button.click(); - await browser.pause(2000); - button.click(); + await expect(Sl.$(data.selectors.page_heading)).toHaveTextContaining(assert); + } + //--------------------------------------------------------- + + async lastNameLabelText(data,assert) + { + await expect(Sl.$(data.selectors.last_name_label_text)).toHaveTextContaining(assert) } //--------------------------------------------------------- - async fillForm(first_name,last_name,email,password,data) + async lastNamePlaceholderText(data,assert) { - await Sl.attr(data.selector_type, data.selectors.first_name).setValue(first_name); - await Sl.attr(data.selector_type, data.selectors.last_name).setValue(last_name); - await browser.pause(1000); - await Sl.attr(data.selector_type, data.selectors.email).setValue(email); - await Sl.attr(data.selector_type, data.selectors.password).setValue(password); + await expect(Sl.attr(data.selector_type, data.selectors.last_name)).toHaveAttributeContaining(data.selector_type,assert) } //--------------------------------------------------------- - async fillAndSignUp(first_name,last_name,email,password,data) + async open (url=null) { + if(url) + { + this.params.page.url = url + } + return super.open(this.params.page.url); + } + + //--------------------------------------------------------- + + async passwordLabelText(data,assert) { - await this.fillForm(first_name,last_name,email,password,data) - await this.clickSignUp(data) - await browser.pause(2000); + await expect(Sl.$(data.selectors.password_label_text)).toHaveTextContaining(assert) + } + + //--------------------------------------------------------- + async passwordPlaceholderText(data,assert) + { + await expect(Sl.attr(data.selector_type, data.selectors.password)).toHaveAttributeContaining(data.selector_type,assert) } //--------------------------------------------------------- - async signUpAndAssertMsg(first_name,last_name,email,password,data,assert,assert_signup) + async passwordValueAssert(password,data,assert) { - await this.fillAndSignUp(first_name,last_name,email,password,data) - await expect(Sl.$(data.selectors.alert_msg)).toHaveTextContaining(assert); - await this.formHeading(data,assert_signup); + const passwordTextField = await Sl.attr(data.selector_type, data.selectors.password) + passwordTextField.setValue(password) + await expect(passwordTextField).toHaveAttributeContaining(data.attribute_name,assert) } //--------------------------------------------------------- @@ -186,11 +167,18 @@ class SignupPage extends Page { //--------------------------------------------------------- - async signUpWithValidData(first_name,last_name,email,password,data,assert) + async signUpAndAssertMsg(first_name,last_name,email,password,data,assert,assert_signup) { await this.fillAndSignUp(first_name,last_name,email,password,data) - await expect(Sl.$(data.selectors.page_heading)).toHaveTextContaining(assert); + await expect(Sl.$(data.selectors.alert_msg)).toHaveTextContaining(assert); + await this.formHeading(data,assert_signup); + } + + //-------------------------------------------------------- + async signUpButtonText(data,assert) + { + await expect(Sl.$(data.selectors.signUp)).toHaveTextContaining(assert); } //--------------------------------------------------------- @@ -201,9 +189,18 @@ class SignupPage extends Page { await browser.pause(2000); await expect(Sl.$(data.selectors.alert_msg)).toHaveTextContaining(assert); await this.formHeading(data,assert_signup); + } + //--------------------------------------------------------- + + async signUpWithValidData(first_name,last_name,email,password,data,assert) + { + await this.fillAndSignUp(first_name,last_name,email,password,data) + await expect(Sl.$(data.selectors.page_heading)).toHaveTextContaining(assert); } -} + //--------------------------------------------------------- -module.exports = new SignupPage(); \ No newline at end of file +} +module.exports = new SignupPage(); +//---------------------------------------------------------------------------------------------------------------------- \ No newline at end of file From f840cf49ced2bdd6129cfaaca349490068ac2e5a Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Thu, 17 Nov 2022 12:49:48 +0530 Subject: [PATCH 47/60] Sign up: Updated --- data/signup.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/data/signup.js b/data/signup.js index a06f1ab..ce9dbee 100644 --- a/data/signup.js +++ b/data/signup.js @@ -190,7 +190,7 @@ class Signup{ { count: 2.4, name: "Verify if the email field accepts '+' sign in the email address.", - expect: "User should be able to signup for the application successfully,if there is '+' sign in the email address and signin page should be displayed.", + expect: "User should be able to signup for the application successfully if the email address consists of '+' sign in the email text-field", first_name: "Demo", last_name : "Test", email : "demo+1tes"+Math.random()*100+"@gmail.com", @@ -200,7 +200,7 @@ class Signup{ { count: 2.5, name: "Verify the email id field With the missing '@' sign and domain in the email address", - expect: "User should not be able to signup for the application and an error message should be displayed.", + expect: "User should not be able to signup for the application if there is missing '@' sign and domain in the email address and an error message should be displayed.", first_name: "Demo", last_name : "Test", email : "demotest", @@ -214,7 +214,7 @@ class Signup{ { count: 2.6, name: "Verify the email id field With the missing domain after '@' symbol in the email address", - expect: "User should not be able to signup for the application and an error message should be displayed.", + expect: "User should not be able to signup for the application if there is missing domain after '@' symbol in the email address and an error message should be displayed.", first_name: "Demo", last_name : "Test", email : "demotest@", @@ -228,7 +228,7 @@ class Signup{ { count: 2.7, name: "Verify the email id field With Two @ sign", - expect: "User should not be able to signup for the application and an error message should be displayed.", + expect: "User should not be able to signup for the application if there are two '@' sign present in the email address and an error message should be displayed.", first_name: "Demo", last_name : "Test", email : "demotest@@gmail.com", @@ -242,7 +242,7 @@ class Signup{ { count: 2.8, name: "Verify leading dot in the email id text box is invalid.", - expect: "User should not be able to signup for the application and an error message should be displayed.", + expect: "User should not be able to signup for the application if there is a leading dot present in the email address and an error message should be displayed.", first_name: "Demo", last_name : "Test", email : ".demotest@gmail.com", @@ -256,7 +256,7 @@ class Signup{ { count: 2.9, name: "Verify trailing dot in the email id text box is invalid.", - expect: "User should not be able to signup for the application and an error message should be displayed.", + expect: "User should not be able to signup for the application if there is a trailing dot present in the email address and an error message should be displayed.", first_name: "Demo", last_name : "Test", email : "demotest@gmail.com.", @@ -270,7 +270,7 @@ class Signup{ { count: 3.1, name: "Verify multiple dots in the email field.", - expect: "User should not be able to signup for the application and an error message should be displayed.", + expect: "User should not be able to signup for the application if there are multiple dots in the email address and an error message should be displayed.", first_name: "Demo", last_name : "Test", email : "demo..test@gmail.com", @@ -284,7 +284,7 @@ class Signup{ { count: 3.2, name: "Verify the email id field With the missing username in the email address", - expect: "User should not be able to signup for the application and an error message should be displayed.", + expect: "User should not be able to signup for the application if the username is missing in the email address and an error message should be displayed.", first_name: "Demo", last_name : "Test", email : "@gmail.com", From 45c1b3eb510e767eec452268a8ed3d6bec5b74d1 Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Thu, 17 Nov 2022 17:53:49 +0530 Subject: [PATCH 48/60] Updated Readme.md file --- README.md | 339 ++++++++++++++++++++++++++-------------------------- Selector.js | 47 ++++++-- 2 files changed, 202 insertions(+), 184 deletions(-) diff --git a/README.md b/README.md index 994bae0..54db4d6 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,9 @@ # vaah-webdriverio -Helpful classes to reduce code & accelerate speed for writing test cases for WebDriver.io +Helpful classes to reduce code & accelerate speed for writing test cases for WebDriver.IO ## Objectives - Reduce code for `selecting` elements and verifying `asserts` +- Code `re-usability` by writing the test scripts independent of the `data` and `POM`. - Generate unique `page id`, `group id` and `test case id` - Run `test cases` based on `page id`, `group id` or `test id` - Generate a well `formated` report @@ -47,22 +48,21 @@ Demo: https://img-v3.getdemo.dev/screenshot/BiI0D6ygq3.mp4 ##### Step 4: Extend `pageobjects` and variables in `constructor` -Extend all your `pageobjects` to `const Page = require('./../vaah-webdriverio/Page');`, +Extend all your `pageobjects` to `const Page = require('./../Page');`, -Example: `pageobjects/Login.page.js`: +Example: `pageobjects/signup.page.js`: ```js -const Page = require('./../vaah-webdriverio/Page'); - -class Login extends Page { +const Page = require('./../Page'); +const Sl = require('./../Selector'); +class SignupPage extends Page { constructor() { super(); - this.page.id = "LI"; // Page ID, Please keep this unique for all the pages. - this.page.name = "Login"; - this.page.path = "login"; - this.page.url = this.base_url + this.page.path; + this.params.page.id = "SU"; + this.params.page.name = "Sign-Up"; + this.params.page.url = this.signup_url; } - + open (url=null) { if(url) { @@ -70,13 +70,81 @@ class Login extends Page { } return super.open(this.page.url); } - + + async signUpButtonText(data,assert) + { + await expect(Sl.$(data.selectors.signUp)).toHaveTextContaining(assert); + } + + async signUpWithValidData(first_name,last_name,email,password,data,assert) + { + await this.fillAndSignUp(first_name,last_name,email,password,data) + await expect(Sl.$(data.selectors.page_heading)).toHaveTextContaining(assert); + } + ... } -module.exports = new Login(); +module.exports = new SignupPage(); ``` -Demo: https://img-v3.getdemo.dev/screenshot/iTSi72u1p3.mp4 +Demo: https://img-v4.getdemo.dev/screenshot/phpstorm64_EZkTiTFfTr.mp4 + +#### step 5: All the values which are required for the `signup.page.js` and `signup.spec.js` should be present in `signup.js` under `data` and for the values which are required for the test scripts, it should be arranged in `groups` and `tests` in JSON format. +Example: +```js +class Signup{ + + constructor() { + this.selector_type = 'placeholder'; + + this.params = { + group:{ + count: null, + name: null, + } + } + + this.selectors = { + first_name: 'First Name', + last_name: 'Last Name', + email: 'Work email address', + password: 'Password', + } + + this.params.page = { + id: "SU", + name: "Sign Up", + url: '/' + } + this.groups = [ + { + count: 1, + name:"Validation", + tests: [ + { + count: 1.1, + name: "Verify user is able to signup by leaving first name text-field blank", + expect: "User should not be able to signup and an error message should be displayed", + first_name: "", + last_name : "Test", + email : "demotest@gmail.com", + password: "testing123", + assert: { + error_msg: "Please fill out this field.", + sign_up_page_heading: "Sign up to your account" + } + }, + ... + ] + } + ] + } +} +module.exports = new Signup(); + +```` -#### step 5: All the methods present in Assert class under Assets in vaah-webdriverio should be prefixed with "async" to run the methods in async mode in the test scripts. +Demo : https://img-v4.getdemo.dev/screenshot/phpstorm64_vRYLZTovEt.mp4 + +#### Note: All the methods present in Assert class under Assets in vaah-webdriverio should be prefixed with "async" to run the methods in async mode in the test scripts. Example: ```js const env = require('./../../../wdio.env'); @@ -108,41 +176,43 @@ module.exports = new Assert() ```` ##### Step 6: Writing test cases -In `specs` folder create a file `login.e2e.js` and write following code for example: +In `specs` folder create a file `signup.spec.js` and write following code for example: ```js -const sl = require('../vaah-webdriverio/Selector'); -const assert = require('../vaah-webdriverio/Assert'); -const login = require('../pageobjects/login.page'); - -login.group.count = 1; // Group counter which will be used to generate Group ID -login.group.name = 'Login'; - -describe(login.groupId(), () => { - //----------------------------------------------------------- - login.test = { - count: 1.1, // Test counter which will be used to generate Test ID - name: 'Tester should be ble to run login test successfully', - expect: "Alert message 'You logged into a secure area!' should appear", - data: "You logged into a secure area!", - } +const Page = require('../pageobjects/signup.page') +const Data = require('../data/signup') +const color = require("cli-color"); + +let params = Data.params; +let inputs; + +params.group = Data.groups[0]; + +describe(Page.groupId(params), async () => { + + params.test = Data.groups[0].tests[0]; + console.log(color.red('params.test'), params.test); + + it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[0]; + await Page.open() + await Page.signUpAndAssertMsg( + inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, + Data, + inputs.assert.error_msg, + inputs.assert.sign_up_page_heading + ); + }) + ... +}) - it(login.testId(), async () => { - login.open(); - browser.maximizeWindow(); - await assert.pageTitle("The Internet"); - sl.name("username", "tomsmith"); - // This will select the element with attribute as name='username' and will also insert the value "tomsmith". - sl.name("password", "SuperSecretPassword!"); - sl.class('radius').click(); - await assert.text(sl.id('flash'), login.test.data); - }); - //----------------------------------------------------------- - -}); ```` -Demo: https://img-v3.getdemo.dev/screenshot/OdRIb4yXIr.mp4 +Demo: https://img-v4.getdemo.dev/screenshot/phpstorm64_OIdm0CHdjo.mp4 -Note: This is just an example of where to write the test script. The test script may differ. +#### Note: This is just an example of where to write the test script. The test scripts may differ. | Selector | In Selector.js|Use|Description| @@ -154,56 +224,25 @@ Note: This is just an example of where to write the test script. The test script |attr|`attr(attribute, value){return$('['+attribute+'="'+value+'"]'); }`|`sl.attr('href','#/forgot-password' ).click();`|This will select the element having attribute as `href` and its value as `#/forgot-password`. |name|`name(name,value=null) { let el = this.attr('name', name); if(value) { el.setValue(value) } return el; }`|`sl.name("username", "tomsmith");`|This will select the element with attribute `name="username"` and will insert value "tomsmith" in it.| |wdio|`wdio(name,value=null) { let el = this.attr('data-wdio', name); if(value) { el.setValue(value) } return el; }`|`sl.wdio("username", "tomsmith")`|This will select the element having attribute `data-wdio='username'` and then will insert the value as "tomsmith" in it. Note: If you are not able to find data-wdio attribute associated with the element in that case either you can add it by yourself or you can ask the developer to add this attribute.| +|icon|`icon(name,value=null) { let el = this.attr('data-icon', name); if(value) { el.setValue(value) } return el; }`|`sl.icon("username", "tomsmith")`|This will select the element having attribute `data-icon='username'` and then will insert the value as "tomsmith" in it. Note: If you are not able to find data-wdio attribute associated with the element in that case either you can add it by yourself or you can ask the developer to add this attribute.| |dusk|`dusk(name,value=null) { let el = this.attr('dusk', name); if(value) { el.setValue(value) } return el; }`|`sl.dusk("username", "tomsmith")`|This will select the element having attribute `dusk='username'` and then will insert the value as "tomsmith" in it.| |role|`role(name) { return this.attr('role', name); }`|`sl.role("navigation").click()`|This will select the element having attribute `role="navigation"` and will click on it.| +#### Note: If there is a common `selector_name` and `selector_type` which is being used multiple times, so we can create a `dynamic selector` for that. +Example: https://img-v4.getdemo.dev/screenshot/phpstorm64_e5bxZaDxd9.mp4 Page object model will help you to store the element's attribute value at one place so that if there is a change in the value then we have to change it at one page rather then changing it at every instance. -To implement page object we need to to create a file to store these values. Inside the tests folder go to wdio folder and then go inside data folder (if the folder does not exist you can create one). Then inside the data folder create a javascript file elements.js and paste the below mentioned code. +To implement page object we need to to create a file to store these values. Inside the tests folder go to wdio folder and then go inside data folder (if the folder does not exist you can create one). Then inside the data folder create a javascript file elements.js(signup.js) and paste the below mentioned code. Demo: https://img-v3.getdemo.dev/screenshot/37DZHpTEcH.mp4 Note: Due to limitations this section is not showing in tabular format. Please copy and paste the section in https://stackedit.io/ to view the tabular form. -```js - class Elements { - constructor() { - this.login= { - signin_email: "signin-email_or_username", - signin_password: "signin-password", - button_signin: "signin-signin", - remember_me_checkbox: "checkbox", - }}} - module.exports = new Elements(); -``` -`this.login={}` block contains all the attributes values used in for the login value. If you are testing any other page you can create a seperate block and add the attributes used in that block. An example is mentioned below: - - Demo: https://img-v3.getdemo.dev/screenshot/bt9XOVsbUS.mp4 - - - ```js - class Elements { - constructor() { - this.login= { - signin_email: "signin-email_or_username", - signin_password: "signin-password", - button_signin: "signin-signin", - remember_me_checkbox: "checkbox", - } - this.home={ - main_heading:"h1", - sub_heading:"h2", - } - }} - module.exports = new Elements(); -``` - When using the above pageobject then you can write the selectors in the following manner: - | Selector | In Selector.js | Use with pageobject | |--|--|--| |testid|`testid(name,value=null) { let el = this.attr('data-testid', name); if(value) { el.setValue(value) } return el; }`|`sl.testid("royal_email", "demo@test.com");` or `sl.testid("royal_email").setValue("demo@test.com")`| @@ -217,7 +256,6 @@ When using the above pageobject then you can write the selectors in the followin |role|`role(name) { return this.attr('role', name); }`|`sl.role(elements.login.button_signin).click();`| - Demo: https://img-v3.getdemo.dev/screenshot/F0Q3bDNA9K.mp4 ``` Note: @@ -229,92 +267,53 @@ Note: ``` Demo(1): https://img-v4.getdemo.dev/screenshot/chrome_revNZwwQcK.mp4 -I have written an example on how to write a test script for logging in using the page object: +I have written an example on how to write a test script for validation of SignUp using the data and page objects: ```js -const sl = require('../vaah-webdriverio/Selector'); -const assert = require('../vaah-webdriverio/Assert'); -const login = require('../pageobjects/login.page'); -const elements = require('../data/elements'); -login.group.count = 1; // Group counter which will be used to generate Group IDlogin.group.name = 'Login'; - -describe(login.groupId(), () => { - login.test = { - count: 1, // Test counter which will be used to generate Test ID - name: 'Tester should be ble to run login test successfully', - expect: "Alert message 'You logged into a secure area!' should appear", - data: "You logged into a secure area!", - }; - - it(login.testId(), async () => { - login.open(); - browser.maximizeWindow(); - await assert.pageTitle("The Internet"); - sl.wdio(elements.login.signin_email, "tomsmith"); - /*This will select the element with attribute as `data-wdio='signin-email_or_username'`which is stored in the elements.js - as `signin_email` and will also insert the value "tomsmith".*/ - sl.dusk(elements.login.signin_password, "SuperSecretPassword"); - sl.class(elements.login.button_signin).click(); - await assert.text(sl.id('flash'), login.test.data); - }); -}); +const Page = require('../pageobjects/signup.page') +const Data = require('../data/signup') +const color = require("cli-color"); + +let params = Data.params; +let inputs; + +params.group = Data.groups[0]; + +describe(Page.groupId(params), async () => { + + params.test = Data.groups[0].tests[0]; + console.log(color.red('params.test'), params.test); + + it(Page.testId(params), async () => { + + inputs = Data.groups[0].tests[0]; + await Page.open() + await Page.signUpAndAssertMsg( + inputs.first_name, + inputs.last_name, + inputs.email, + inputs.password, + Data, + inputs.assert.error_msg, + inputs.assert.sign_up_page_heading + ); + }) +}) ``` -Demo: https://img-v3.getdemo.dev/screenshot/RU2Tp6h1qo.mp4 +Demo: https://img-v4.getdemo.dev/screenshot/phpstorm64_LmPxlmbR8G.mp4 -Note: The test_count_id should be unique so that there will be no conflict between the test scripts. -Example: - ```js -const sl = require('../vaah-webdriverio/Selector'); -const assert = require('../vaah-webdriverio/Assert'); -const page = require('../pageobjects/about-us.page'); -const elements = require('../data/elements'); -const assert_data = require('../data/assert-data'); - - -let params = page.params; - -params.group.count = 1; -params.group.name = 'About-Us'; - -describe(page.groupId(params), () => { - -//---------------------------------------------------------------------------------------- - - params.test = { - count: 1.1, - name: "Visit About Us page and check for title", - expect: "Main heading should be '" + assert_data.about_us_page_title.title + "'", - }; - it(page.testId(params), async () => { - page.open(); - browser.maximizeWindow(); - await assert.text(sl.$(elements.about_us.heading), assert_data.about_us_page_title.title); - }); - - params.test = { - count: 1.2, - name: "Validating seems interesting button", - expect: "After clicking the button should reveal the rest of story '" + assert_data.about_us_page_title.last_story + "'", - }; - it(page.testId(params), async () => { - page.open(); - browser.maximizeWindow(); - await assert.text(sl.$(elements.about_us.heading), assert_data.about_us_page_title.title); - sl.wdio(elements.about_us.button_interesting).click(); - await assert.text(sl.wdio(elements.about_us.last_story), assert_data.about_us_page_title.last_story); - }); -}); -``` -Demo: https://img-v4.getdemo.dev/screenshot/phpstorm64_KzTsODht7l.mp4 +#### Note: The test_count_id should be unique so that there will be no conflict between the test scripts. + +Demo: https://img-v4.getdemo.dev/screenshot/phpstorm64_f0fQLyAbL9.mp4 ##### Step 7: Run test Now, you can run the test via: ```sh -npx wdio --spec ./tests/wdio/specs/login.e2e.js +npx wdio --spec ./test/wdio/vaah-webdriverio/specs/signup.spec.js ``` -Demo: https://img-v4.getdemo.dev/screenshot/chrome_uNW2UpI0dH.mp4 +Demo: https://img-v4.getdemo.dev/screenshot/phpstorm64_2uUgncax8D.mp4 or run all tests via: @@ -322,9 +321,7 @@ or run all tests via: ```shell npx wdio run ./wdio.conf.js ``` -Demo: https://img-v3.getdemo.dev/screenshot/AWcVR496IG.mp4 - -The Demo shows how a passed and failed test cases will be represented. +Demo: https://img-v4.getdemo.dev/screenshot/phpstorm64_lbKJIy41Zz.mp4 ##### Step 8: Result @@ -333,27 +330,27 @@ The Demo shows how a passed and failed test cases will be represented. It contains: ``` -[PAGE ID: LI] -[GROUP ID: LI_1] -[TEST ID: LI_1_1.1] +[PAGE ID: SU] +[GROUP ID: SU_1] +[TEST ID: SU_1_1.1] ``` -Demo: https://img-v4.getdemo.dev/screenshot/phpstorm64_0r5SfdxoR8.mp4 +Demo: https://img-v4.getdemo.dev/screenshot/phpstorm64_yHgMeEiX8f.mp4 If you need to run tests based on `page id`, `group id` or `test id`, you can use following command: ```shell npx wdio --mochaOpts.grep -e.g. npx wdio --mochaOpts.grep LI // This will run all the test cases under the Page with Page ID LI_1 -Demo:https://img-v3.getdemo.dev/screenshot/jqNYsEBnhT.mp4 +e.g. npx wdio --mochaOpts.grep SU // This will run all the test cases under the Page with Page ID SU +Demo:https://img-v4.getdemo.dev/screenshot/phpstorm64_MsNMIkuXuD.mp4 npx wdio --mochaOpts.grep -e.g. npx wdio --mochaOpts.grep LI_1 // This will run all the test cases under the Group with Group ID LI_1 -Demo:https://img-v3.getdemo.dev/screenshot/b54baoyxkZ.mp4 +e.g. npx wdio --mochaOpts.grep SU_1 // This will run all the test cases under the Group with Group ID SU_1 +Demo:https://img-v4.getdemo.dev/screenshot/phpstorm64_6RI0zswh1w.mp4 npx wdio --mochaOpts.grep -e.g. npx wdio --mochaOpts.grep LI_1_1.1 // This will run all the test cases under the Page ID LI having Group ID 1 and Test ID starting with 1.1 -Demo:https://img-v4.getdemo.dev/screenshot/phpstorm64_NhXad1pY4Z.mp4 -// Note: If you have test case with test ID as LI_1_11, LI_1_12... LI_1_19, these tests will also run if you provide the test ID as LI_1_1 +e.g. npx wdio --mochaOpts.grep SU_1_1.1 // This will run all the test cases under the Page ID SU having Group ID 1 and Test ID starting with 1.1 +Demo:https://img-v4.getdemo.dev/screenshot/phpstorm64_wyve3JMFzO.mp4 +// Note: If you have test case with test ID as SU_1_11, SU_1_12... SU_1_19, these tests will also run if you provide the test ID as SU_1_1 // To avoid this situation you can use a keyword to run a single test, but make sure to keep the keyword unique otherwise all the test cases having that keyword will run while executing tests. ``` or you can even run the test cases based on a specific keyword: diff --git a/Selector.js b/Selector.js index 30210cd..4ef16d7 100644 --- a/Selector.js +++ b/Selector.js @@ -1,31 +1,52 @@ class El{ + testid(name,value=null) + { + let el = this.attr('data-testid', name); + if(value) + { + el.setValue(value) + } + return el; + } + //----------------------------------------------------- + id(id) { return $("#"+id); } + //----------------------------------------------------- + class(name) { return $("."+name); } + //----------------------------------------------------- + $(selector) { return $(selector); } + //----------------------------------------------------- + child(parent, child) { return $(parent).$$(child); } + //----------------------------------------------------- + attr(attribute, value) { return $('['+attribute+'="'+value+'"]'); } + //----------------------------------------------------- + name(name,value=null) { let el = this.attr('name', name); @@ -35,7 +56,9 @@ class El{ } return el; } + //----------------------------------------------------- + wdio(name,value=null) { let el = this.attr('data-wdio', name); @@ -45,7 +68,9 @@ class El{ } return el; } + //----------------------------------------------------- + icon(name,value=null) { let el = this.attr('data-icon', name); @@ -55,7 +80,9 @@ class El{ } return el; } + //----------------------------------------------------- + dusk(name,value=null) { let el = this.attr('dusk', name); @@ -65,22 +92,16 @@ class El{ } return el; } + //----------------------------------------------------- + role(name) { return this.attr('role', name); } + //----------------------------------------------------- - testid(name,value=null) - { - let el = this.attr('data-testid', name); - if(value) - { - el.setValue(value) - } - return el; - } - //----------------------------------------------------- + dynamic(selector_name, selector_type='dusk'){ let el; switch (selector_type) @@ -92,8 +113,8 @@ class El{ } return el; } - //----------------------------------------------------- + //----------------------------------------------------- } - -module.exports = new El() \ No newline at end of file +module.exports = new El() +//---------------------------------------------------------------------------------------------------------------------- \ No newline at end of file From 72608545eb9c0c5e6cc6252470c2d3bb6a125f7d Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Thu, 17 Nov 2022 18:20:10 +0530 Subject: [PATCH 49/60] updated readme.md file --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 54db4d6..f235c0d 100644 --- a/README.md +++ b/README.md @@ -325,8 +325,7 @@ Demo: https://img-v4.getdemo.dev/screenshot/phpstorm64_lbKJIy41Zz.mp4 ##### Step 8: Result - - + It contains: ``` From fc6947fbf70138657fbd654e3f44bfb5c642950a Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Thu, 17 Nov 2022 18:25:05 +0530 Subject: [PATCH 50/60] Readme.md file Updated --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index f235c0d..826fd5d 100644 --- a/README.md +++ b/README.md @@ -224,7 +224,6 @@ Demo: https://img-v4.getdemo.dev/screenshot/phpstorm64_OIdm0CHdjo.mp4 |attr|`attr(attribute, value){return$('['+attribute+'="'+value+'"]'); }`|`sl.attr('href','#/forgot-password' ).click();`|This will select the element having attribute as `href` and its value as `#/forgot-password`. |name|`name(name,value=null) { let el = this.attr('name', name); if(value) { el.setValue(value) } return el; }`|`sl.name("username", "tomsmith");`|This will select the element with attribute `name="username"` and will insert value "tomsmith" in it.| |wdio|`wdio(name,value=null) { let el = this.attr('data-wdio', name); if(value) { el.setValue(value) } return el; }`|`sl.wdio("username", "tomsmith")`|This will select the element having attribute `data-wdio='username'` and then will insert the value as "tomsmith" in it. Note: If you are not able to find data-wdio attribute associated with the element in that case either you can add it by yourself or you can ask the developer to add this attribute.| -|icon|`icon(name,value=null) { let el = this.attr('data-icon', name); if(value) { el.setValue(value) } return el; }`|`sl.icon("username", "tomsmith")`|This will select the element having attribute `data-icon='username'` and then will insert the value as "tomsmith" in it. Note: If you are not able to find data-wdio attribute associated with the element in that case either you can add it by yourself or you can ask the developer to add this attribute.| |dusk|`dusk(name,value=null) { let el = this.attr('dusk', name); if(value) { el.setValue(value) } return el; }`|`sl.dusk("username", "tomsmith")`|This will select the element having attribute `dusk='username'` and then will insert the value as "tomsmith" in it.| |role|`role(name) { return this.attr('role', name); }`|`sl.role("navigation").click()`|This will select the element having attribute `role="navigation"` and will click on it.| From 4d018f1c47bcb4315f8e87ab593fa9440a727f38 Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Thu, 17 Nov 2022 18:48:19 +0530 Subject: [PATCH 51/60] Updated: Readme.md --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 826fd5d..c20d595 100644 --- a/README.md +++ b/README.md @@ -71,9 +71,11 @@ class SignupPage extends Page { return super.open(this.page.url); } - async signUpButtonText(data,assert) + async signUpAndAssertMsg(first_name,last_name,email,password,data,assert,assert_signup) { - await expect(Sl.$(data.selectors.signUp)).toHaveTextContaining(assert); + await this.fillAndSignUp(first_name,last_name,email,password,data) + await expect(Sl.$(data.selectors.alert_msg)).toHaveTextContaining(assert); + await this.formHeading(data,assert_signup); } async signUpWithValidData(first_name,last_name,email,password,data,assert) From a580d10c525810789968cf3b38e7875d62cf90f5 Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Thu, 17 Nov 2022 20:12:06 +0530 Subject: [PATCH 52/60] Forgot Password : First Test Script --- data/forgot_password.js | 41 +++++++++++++++++++++++++++++ pageobjects/forgot_password.page.js | 41 +++++++++++++++++++++++++++++ specs/forgot_password.spec.js | 26 ++++++++++++++++++ 3 files changed, 108 insertions(+) create mode 100644 data/forgot_password.js create mode 100644 pageobjects/forgot_password.page.js create mode 100644 specs/forgot_password.spec.js diff --git a/data/forgot_password.js b/data/forgot_password.js new file mode 100644 index 0000000..07cb80f --- /dev/null +++ b/data/forgot_password.js @@ -0,0 +1,41 @@ +class Fpassword{ + + constructor() { + + this.params = { + group:{ + count: null, + name: null, + } + } + + this.selectors = { + forgot_password: '=Forgot Password?', + page_heading: 'h3' + } + + this.params.page = { + id: "FP", + name: "Forgot Password", + url: '/' + } + + this.groups = [ + { + count: 1, + name:"Functionality", + tests: [ + { + count: 1.1, + name: "Verify that the forgot password link is clickable and is redirected to the forgot password page.", + expect: "User should be able to click on forgot password link and forgot password page should be displayed.", + assert: "Forgot Password?" + }, + ] + } + ] + } + +} + +module.exports = new Fpassword(); \ No newline at end of file diff --git a/pageobjects/forgot_password.page.js b/pageobjects/forgot_password.page.js new file mode 100644 index 0000000..50be4b0 --- /dev/null +++ b/pageobjects/forgot_password.page.js @@ -0,0 +1,41 @@ +const Page = require('./../Page'); +const Sl = require('./../Selector'); + +/** + * sub page containing specific selectors and methods for a specific page + */ +class FpasswordPage extends Page { + + constructor() { + super(); + this.params.page.id = "FP"; + this.params.page.name = "Forgot-Password"; + this.params.page.url = this.base_url; + } + + + async open(url = null) { + if (url) { + this.params.page.url = url + } + return super.open(this.params.page.url); + } + + //--------------------------------------------------------- + + async forgotPassword(data,assert) + { + await Sl.$(data.selectors.forgot_password).click(); + await this.pageHeading(data,assert); + } + + //--------------------------------------------------------- + + async pageHeading(data,assert) + { + await expect(Sl.$(data.selectors.page_heading)).toHaveTextContaining(assert); + } + +} +module.exports = new FpasswordPage(); +//---------------------------------------------------------------------------------------------------------------------- \ No newline at end of file diff --git a/specs/forgot_password.spec.js b/specs/forgot_password.spec.js new file mode 100644 index 0000000..617d10a --- /dev/null +++ b/specs/forgot_password.spec.js @@ -0,0 +1,26 @@ +const Page = require('../pageobjects/forgot_password.page') +const Data = require('../data/forgot_password') +const color = require("cli-color"); + +let params = Data.params; +let inputs; + +params.group = Data.groups[0]; + +describe(Page.groupId(params), async () => { + + params.test = Data.groups[0].tests[0]; + console.log(color.red('params.test'), params.test); + + it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[0]; + console.log(color.green('params.test'), inputs); + await Page.open() + await Page.forgotPassword( + Data, + inputs.assert + ); + }) + //------------------------------------------------------------------------------------------------------------------ +}) + From 885dfd74edf602f2eb0a403b2ad5e052a5cd39f7 Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Fri, 18 Nov 2022 12:07:20 +0530 Subject: [PATCH 53/60] Updated Readme.md file --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c20d595..b776781 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ Helpful classes to reduce code & accelerate speed for writing test cases for ## Objectives - Reduce code for `selecting` elements and verifying `asserts` -- Code `re-usability` by writing the test scripts independent of the `data` and `POM`. +- Code `re-usability` by writing the test scripts independent of the `data` and `POM(Page Object Model)`. - Generate unique `page id`, `group id` and `test case id` - Run `test cases` based on `page id`, `group id` or `test id` - Generate a well `formated` report @@ -89,7 +89,7 @@ module.exports = new SignupPage(); ``` Demo: https://img-v4.getdemo.dev/screenshot/phpstorm64_EZkTiTFfTr.mp4 -#### step 5: All the values which are required for the `signup.page.js` and `signup.spec.js` should be present in `signup.js` under `data` and for the values which are required for the test scripts, it should be arranged in `groups` and `tests` in JSON format. +#### step 5: All the values which are required for the `signup.page.js` and `signup.spec.js` should be present in `./test/wdio/vaah-webdriverio/data/signup.js`and for the values which are required for the test scripts, it should be arranged in `groups` and `tests` in JSON format. Example: ```js class Signup{ From 8668ce88d9d3327042b24965a2ce49c692b7427d Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Fri, 18 Nov 2022 12:21:55 +0530 Subject: [PATCH 54/60] Updated. --- data/signin.js | 2 +- data/signup.js | 4 ++-- pageobjects/signin.page.js | 34 +++++++++++++-------------- pageobjects/signup.page.js | 48 +++++++++++++++++++------------------- 4 files changed, 44 insertions(+), 44 deletions(-) diff --git a/data/signin.js b/data/signin.js index 08634a9..01ab302 100644 --- a/data/signin.js +++ b/data/signin.js @@ -11,7 +11,7 @@ class Signin{ } } - this.selectors = { + this.elements = { email: 'signin-email_or_username', password: 'signin-password', submit: 'signin-signin', diff --git a/data/signup.js b/data/signup.js index ce9dbee..679a3ec 100644 --- a/data/signup.js +++ b/data/signup.js @@ -1,7 +1,7 @@ class Signup{ constructor() { - this.selector_type = 'placeholder'; + this.selector_attr = 'placeholder'; this.attribute_name= 'type' this.params = { @@ -11,7 +11,7 @@ class Signup{ } } - this.selectors = { + this.elements = { first_name: 'First Name', last_name: 'Last Name', email: 'Work email address', diff --git a/pageobjects/signin.page.js b/pageobjects/signin.page.js index 096c8c3..b4913e8 100644 --- a/pageobjects/signin.page.js +++ b/pageobjects/signin.page.js @@ -2,7 +2,7 @@ const Page = require('./../Page'); const Sl = require('./../Selector'); /** - * sub page containing specific selectors and methods for a specific page + * sub page containing specific elements and methods for a specific page */ class SigninPage extends Page { @@ -17,18 +17,18 @@ class SigninPage extends Page { async clickSignIn(data) { - await Sl.dynamic(data.selectors.submit, data.selector_type).click(); + await Sl.dynamic(data.elements.submit, data.selector_type).click(); } //--------------------------------------------------------- async eyeButton(password,data,assert,assert_text) { - const passwordTextField = await Sl.dynamic(data.selectors.password, data.selector_type); + const passwordTextField = await Sl.dynamic(data.elements.password, data.selector_type); passwordTextField.setValue(password); await expect(passwordTextField).toHaveAttributeContaining(data.attribute_name,assert) await browser.pause(2000); - await Sl.icon(data.selectors.eye_icon).click(); + await Sl.icon(data.elements.eye_icon).click(); await expect(passwordTextField).toHaveAttributeContaining(data.attribute_name,assert_text) } @@ -36,7 +36,7 @@ class SigninPage extends Page { async fillAndRemoveEmail(email,data,assert_value,assert) { - const emailTextField = await Sl.dynamic(data.selectors.email, data.selector_type); + const emailTextField = await Sl.dynamic(data.elements.email, data.selector_type); emailTextField.setValue(email); await expect(emailTextField).toHaveValueContaining(assert_value); emailTextField.clearValue(); @@ -46,7 +46,7 @@ class SigninPage extends Page { //--------------------------------------------------------- async fillAndRemovePassword(password,data,assert_value,assert) { - const passwordTextField = await Sl.dynamic(data.selectors.password, data.selector_type); + const passwordTextField = await Sl.dynamic(data.elements.password, data.selector_type); passwordTextField.setValue(password); await expect(passwordTextField).toHaveValueContaining(assert_value); passwordTextField.clearValue(); @@ -65,15 +65,15 @@ class SigninPage extends Page { async fillForm(email,password,data) { - await Sl.dynamic(data.selectors.email, data.selector_type).setValue(email); - await Sl.dynamic(data.selectors.password, data.selector_type).setValue(password); + await Sl.dynamic(data.elements.email, data.selector_type).setValue(email); + await Sl.dynamic(data.elements.password, data.selector_type).setValue(password); } //--------------------------------------------------------- async forgotPassword(data,assert) { - await Sl.$(data.selectors.forgot_password).click(); + await Sl.$(data.elements.forgot_password).click(); await this.pageHeading(data,assert); } @@ -81,22 +81,22 @@ class SigninPage extends Page { async heading(data,assert) { - await expect(Sl.$(data.selectors.heading)).toHaveTextContaining(assert); + await expect(Sl.$(data.elements.heading)).toHaveTextContaining(assert); } //--------------------------------------------------------- async linkText(data,assert) { - await expect(Sl.$(data.selectors.link_text)).toHaveTextContaining(assert); + await expect(Sl.$(data.elements.link_text)).toHaveTextContaining(assert); } //--------------------------------------------------------- async moveAndLogout(data) { - await Sl.role(data.selectors.menu_item).moveTo(); - await Sl.$(data.selectors.logout_button).click(); + await Sl.role(data.elements.menu_item).moveTo(); + await Sl.$(data.elements.logout_button).click(); } //--------------------------------------------------------- @@ -113,14 +113,14 @@ class SigninPage extends Page { async pageHeading(data,assert) { - await expect(Sl.$(data.selectors.page_heading)).toHaveTextContaining(assert); + await expect(Sl.$(data.elements.page_heading)).toHaveTextContaining(assert); } //--------------------------------------------------------- async pageSubHeading(data,assert) { - await expect(Sl.$(data.selectors.page_subheading)).toHaveTextContaining(assert); + await expect(Sl.$(data.elements.page_subheading)).toHaveTextContaining(assert); } //--------------------------------------------------------- @@ -136,7 +136,7 @@ class SigninPage extends Page { async signInAndAssert(email,password,data,assert,assert_signin) { await this.fillAndSignIn(email,password,data) - await expect(Sl.role(data.selectors.alert_box)).toHaveTextContaining(assert); + await expect(Sl.role(data.elements.alert_box)).toHaveTextContaining(assert); await this.pageHeading(data,assert_signin); } @@ -167,7 +167,7 @@ class SigninPage extends Page { async signInButtonText(data,assert) { - await expect(Sl.dynamic(data.selectors.submit, data.selector_type)).toHaveTextContaining(assert); + await expect(Sl.dynamic(data.elements.submit, data.selector_type)).toHaveTextContaining(assert); } //--------------------------------------------------------- diff --git a/pageobjects/signup.page.js b/pageobjects/signup.page.js index d208965..c519916 100644 --- a/pageobjects/signup.page.js +++ b/pageobjects/signup.page.js @@ -2,7 +2,7 @@ const Page = require('./../Page'); const Sl = require('./../Selector'); /** - * sub page containing specific selectors and methods for a specific page + * sub page containing specific elements and methods for a specific page */ class SignupPage extends Page { @@ -17,7 +17,7 @@ class SignupPage extends Page { async clickSignUp(data) { - const button = await Sl.$(data.selectors.signUp); + const button = await Sl.$(data.elements.signUp); button.click(); await browser.pause(2000); button.click(); @@ -27,20 +27,20 @@ class SignupPage extends Page { async emailLabelText(data,assert) { - await expect(Sl.$(data.selectors.email_label_text)).toHaveTextContaining(assert) + await expect(Sl.$(data.elements.email_label_text)).toHaveTextContaining(assert) } //--------------------------------------------------------- async emailPlaceholderText(data,assert) { - await expect(Sl.attr(data.selector_type, data.selectors.email)).toHaveAttributeContaining(data.selector_type,assert) + await expect(Sl.attr(data.selector_attr, data.elements.email)).toHaveAttributeContaining(data.selector_attr,assert) } //--------------------------------------------------------- async fillAndRemoveFirstName(first_name,data,assert_value,assert) { - const firstNameTextField = await Sl.attr(data.selector_type, data.selectors.first_name) + const firstNameTextField = await Sl.attr(data.selector_attr, data.elements.first_name) firstNameTextField.setValue(first_name); await expect(firstNameTextField).toHaveValueContaining(assert_value); firstNameTextField.clearValue(); @@ -50,7 +50,7 @@ class SignupPage extends Page { //--------------------------------------------------------- async fillAndRemoveLastName(last_name,data,assert_value,assert) { - const lastNameTextField = await Sl.attr(data.selector_type, data.selectors.last_name) + const lastNameTextField = await Sl.attr(data.selector_attr, data.elements.last_name) lastNameTextField.setValue(last_name); await expect(lastNameTextField).toHaveValueContaining(assert_value); lastNameTextField.clearValue(); @@ -60,7 +60,7 @@ class SignupPage extends Page { //--------------------------------------------------------- async fillAndRemovePassword(password,data,assert_value,assert) { - const passwordTextField = await Sl.attr(data.selector_type, data.selectors.password) + const passwordTextField = await Sl.attr(data.selector_attr, data.elements.password) passwordTextField.setValue(password); await expect(passwordTextField).toHaveValueContaining(assert_value); passwordTextField.clearValue(); @@ -81,46 +81,46 @@ class SignupPage extends Page { async fillForm(first_name,last_name,email,password,data) { - await Sl.attr(data.selector_type, data.selectors.first_name).setValue(first_name); - await Sl.attr(data.selector_type, data.selectors.last_name).setValue(last_name); + await Sl.attr(data.selector_attr, data.elements.first_name).setValue(first_name); + await Sl.attr(data.selector_attr, data.elements.last_name).setValue(last_name); await browser.pause(1000); - await Sl.attr(data.selector_type, data.selectors.email).setValue(email); - await Sl.attr(data.selector_type, data.selectors.password).setValue(password); + await Sl.attr(data.selector_attr, data.elements.email).setValue(email); + await Sl.attr(data.selector_attr, data.elements.password).setValue(password); } //--------------------------------------------------------- async firstNameLabelText(data,assert) { - await expect(Sl.$(data.selectors.first_name_label_text)).toHaveTextContaining(assert) + await expect(Sl.$(data.elements.first_name_label_text)).toHaveTextContaining(assert) } //--------------------------------------------------------- async firstNamePlaceholderText(data,assert) { - await expect(Sl.attr(data.selector_type, data.selectors.first_name)).toHaveAttributeContaining(data.selector_type,assert) + await expect(Sl.attr(data.selector_attr, data.elements.first_name)).toHaveAttributeContaining(data.selector_attr,assert) } //--------------------------------------------------------- async formHeading(data,assert) { - await expect(Sl.$(data.selectors.page_heading)).toHaveTextContaining(assert); + await expect(Sl.$(data.elements.page_heading)).toHaveTextContaining(assert); } //--------------------------------------------------------- async lastNameLabelText(data,assert) { - await expect(Sl.$(data.selectors.last_name_label_text)).toHaveTextContaining(assert) + await expect(Sl.$(data.elements.last_name_label_text)).toHaveTextContaining(assert) } //--------------------------------------------------------- async lastNamePlaceholderText(data,assert) { - await expect(Sl.attr(data.selector_type, data.selectors.last_name)).toHaveAttributeContaining(data.selector_type,assert) + await expect(Sl.attr(data.selector_attr, data.elements.last_name)).toHaveAttributeContaining(data.selector_attr,assert) } //--------------------------------------------------------- @@ -137,21 +137,21 @@ class SignupPage extends Page { async passwordLabelText(data,assert) { - await expect(Sl.$(data.selectors.password_label_text)).toHaveTextContaining(assert) + await expect(Sl.$(data.elements.password_label_text)).toHaveTextContaining(assert) } //--------------------------------------------------------- async passwordPlaceholderText(data,assert) { - await expect(Sl.attr(data.selector_type, data.selectors.password)).toHaveAttributeContaining(data.selector_type,assert) + await expect(Sl.attr(data.selector_attr, data.elements.password)).toHaveAttributeContaining(data.selector_attr,assert) } //--------------------------------------------------------- async passwordValueAssert(password,data,assert) { - const passwordTextField = await Sl.attr(data.selector_type, data.selectors.password) + const passwordTextField = await Sl.attr(data.selector_attr, data.elements.password) passwordTextField.setValue(password) await expect(passwordTextField).toHaveAttributeContaining(data.attribute_name,assert) } @@ -161,7 +161,7 @@ class SignupPage extends Page { async signUpAndAssertBox(first_name,last_name,email,password,data,assert,assert_signup) { await this.fillAndSignUp(first_name,last_name,email,password,data) - await expect(Sl.role(data.selectors.alert_box)).toHaveTextContaining(assert); + await expect(Sl.role(data.elements.alert_box)).toHaveTextContaining(assert); await this.formHeading(data,assert_signup); } @@ -170,7 +170,7 @@ class SignupPage extends Page { async signUpAndAssertMsg(first_name,last_name,email,password,data,assert,assert_signup) { await this.fillAndSignUp(first_name,last_name,email,password,data) - await expect(Sl.$(data.selectors.alert_msg)).toHaveTextContaining(assert); + await expect(Sl.$(data.elements.alert_msg)).toHaveTextContaining(assert); await this.formHeading(data,assert_signup); } @@ -178,7 +178,7 @@ class SignupPage extends Page { async signUpButtonText(data,assert) { - await expect(Sl.$(data.selectors.signUp)).toHaveTextContaining(assert); + await expect(Sl.$(data.elements.signUp)).toHaveTextContaining(assert); } //--------------------------------------------------------- @@ -187,7 +187,7 @@ class SignupPage extends Page { { await this.clickSignUp(data) await browser.pause(2000); - await expect(Sl.$(data.selectors.alert_msg)).toHaveTextContaining(assert); + await expect(Sl.$(data.elements.alert_msg)).toHaveTextContaining(assert); await this.formHeading(data,assert_signup); } @@ -196,7 +196,7 @@ class SignupPage extends Page { async signUpWithValidData(first_name,last_name,email,password,data,assert) { await this.fillAndSignUp(first_name,last_name,email,password,data) - await expect(Sl.$(data.selectors.page_heading)).toHaveTextContaining(assert); + await expect(Sl.$(data.elements.page_heading)).toHaveTextContaining(assert); } //--------------------------------------------------------- From b43ebf013b05d042bed1f2def7e02ea5bf84775f Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Fri, 18 Nov 2022 12:25:20 +0530 Subject: [PATCH 55/60] Readme.md file Updated --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index b776781..2d3bc52 100644 --- a/README.md +++ b/README.md @@ -74,14 +74,14 @@ class SignupPage extends Page { async signUpAndAssertMsg(first_name,last_name,email,password,data,assert,assert_signup) { await this.fillAndSignUp(first_name,last_name,email,password,data) - await expect(Sl.$(data.selectors.alert_msg)).toHaveTextContaining(assert); + await expect(Sl.$(data.elements.alert_msg)).toHaveTextContaining(assert); await this.formHeading(data,assert_signup); } async signUpWithValidData(first_name,last_name,email,password,data,assert) { await this.fillAndSignUp(first_name,last_name,email,password,data) - await expect(Sl.$(data.selectors.page_heading)).toHaveTextContaining(assert); + await expect(Sl.$(data.elements.page_heading)).toHaveTextContaining(assert); } ... } @@ -95,7 +95,7 @@ Example: class Signup{ constructor() { - this.selector_type = 'placeholder'; + this.selector_attr = 'placeholder'; this.params = { group:{ @@ -104,7 +104,7 @@ class Signup{ } } - this.selectors = { + this.elements = { first_name: 'First Name', last_name: 'Last Name', email: 'Work email address', From f4a94e514f65c92cc83e4bbccaaa6c551cb9d08c Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Fri, 18 Nov 2022 15:34:59 +0530 Subject: [PATCH 56/60] Sign In: Updated url and data --- data/signin.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/data/signin.js b/data/signin.js index 01ab302..893b186 100644 --- a/data/signin.js +++ b/data/signin.js @@ -54,7 +54,7 @@ class Signin{ name: "Invalid email or username and Valid Password", expect: "User should not be able to signin and an error message should be displayed", email: "satyajeet@gmail.com", - password: "admin@vaahcms", + password: "WebReinvent@2021", assert: { error_msg: "No user exist", sign_in_page_title: "Sign In", @@ -78,7 +78,7 @@ class Signin{ name: "Valid Credentials", expect: "User should be able to signin into the application successfully.", email: "we@webreinvent.com", - password: "admin@vaahcms", + password: "WebReinvent@2021", assert: ["Welcome to Vaah" , "cms"] }, @@ -88,7 +88,7 @@ class Signin{ name: "Verify user is able to signin using alphabetic characters in email or username text-field", expect: "User should not be able to signin and an error message should be displayed", email: "satyajeetsinghsanu", - password: "admin@vaahcms", + password: "WebReinvent@2021", assert: { error_msg: "No user exist", sign_in_page_title: "Sign In" @@ -100,7 +100,7 @@ class Signin{ name: "Verify user is able to signin using numeric characters in email or username text-field", expect: "User should not be able to signin and an error message should be displayed", email: "123456789", - password: "admin@vaahcms", + password: "WebReinvent@2021", assert: { error_msg: "No user exist", sign_in_page_title: "Sign In" @@ -112,7 +112,7 @@ class Signin{ name: "Verify user is able to signin with blank email or username text-field", expect: "User should not be able to signin and an error message should be displayed", email: "", - password: "admin@vaahcms", + password: "WebReinvent@2021", assert: { error_msg: "The email or username field is required.", sign_in_page_title: "Sign In" @@ -148,7 +148,7 @@ class Signin{ name: "Verify logging into the application and browsing back", expect: " User should not get logged out.", email: "we@webreinvent.com", - password: "admin@vaahcms", + password: "WebReinvent@2021", assert: { home_page_title: ["Welcome to Vaah", "cms"], sign_in_page_title: "Sign In" @@ -161,7 +161,7 @@ class Signin{ name: "Verify logging out from the application and browsing back ", expect: " User should not get logged in again.", email: "we@webreinvent.com", - password: "admin@vaahcms", + password: "WebReinvent@2021", assert: { home_page_title: ["Welcome to Vaah", "cms"], sign_in_page_title: "Sign In", @@ -223,9 +223,9 @@ class Signin{ count: 1.3, name: "Verify user is able to remove text from password text-field", expect: "User should be able to remove text from password text-field", - password: "admin@vaahcms", + password: "WebReinvent@2021", assert: { - text_value: "admin@vaahcms", + text_value: "WebReinvent@2021", blank_value: "" } }, From a995d35dee3388869643e40e946f395b0f034000 Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Fri, 18 Nov 2022 20:02:14 +0530 Subject: [PATCH 57/60] forgot password : test scripts added --- data/forgot_password.js | 40 +++++++++++++++++++-- pageobjects/forgot_password.page.js | 40 ++++++++++++++++++--- specs/forgot_password.spec.js | 55 +++++++++++++++++++++++++++-- 3 files changed, 126 insertions(+), 9 deletions(-) diff --git a/data/forgot_password.js b/data/forgot_password.js index 07cb80f..a1fe5ca 100644 --- a/data/forgot_password.js +++ b/data/forgot_password.js @@ -1,7 +1,7 @@ class Fpassword{ constructor() { - + this.attr_type = 'placeholder'; this.params = { group:{ count: null, @@ -9,9 +9,13 @@ class Fpassword{ } } - this.selectors = { + this.elements = { forgot_password: '=Forgot Password?', - page_heading: 'h3' + email: 'forgot-email', + send_code_button: 'forgot-send_code', + alert_box: 'alertdialog', + page_heading: 'h3', + page_subheading: 'p', } this.params.page = { @@ -31,6 +35,36 @@ class Fpassword{ expect: "User should be able to click on forgot password link and forgot password page should be displayed.", assert: "Forgot Password?" }, + { + count: 1.2, + name: "Verify heading of the forgot password page.", + expect: "Heading of the forgot password page should be present.", + assert: "Forgot Password?" + }, + { + count: 1.3, + name: "Verify sub-heading of the forgot password page.", + expect: "Sub-heading of the forgot password page should be present.", + assert: "You can recover your password from here." + }, + { + count: 1.4, + name: "Verify that the placeholder text is present in 'enter email' text-field of the forgot password page", + expect: "Placeholder text should be present in the 'enter email' text field of the forgot password page", + assert: "Enter Email" + }, + { + count: 1.5, + name: "Verify that the label text present in 'send code' button of the forgot password page.", + expect: "Label text should be present in 'send code' button of the forgot password page.", + assert: "Send code" + }, + /*{ + count: 1.6, + name: "Verify that the forgot password functionality when the user enters the unregistered email id and clicks on the send code button.", + expect: "user should not get the code or link and and an error message should be displayed.", + assert: "No user exist" + }*/ ] } ] diff --git a/pageobjects/forgot_password.page.js b/pageobjects/forgot_password.page.js index 50be4b0..524e59b 100644 --- a/pageobjects/forgot_password.page.js +++ b/pageobjects/forgot_password.page.js @@ -23,19 +23,51 @@ class FpasswordPage extends Page { //--------------------------------------------------------- - async forgotPassword(data,assert) + async forgotPassword(data) { - await Sl.$(data.selectors.forgot_password).click(); - await this.pageHeading(data,assert); + await Sl.$(data.elements.forgot_password).click(); } //--------------------------------------------------------- async pageHeading(data,assert) { - await expect(Sl.$(data.selectors.page_heading)).toHaveTextContaining(assert); + await this.forgotPassword(data) + await expect(Sl.$(data.elements.page_heading)).toHaveTextContaining(assert); } + //--------------------------------------------------------- + + async pageSubheading(data,assert) + { + await this.forgotPassword(data) + await expect(Sl.$(data.elements.page_subheading)).toHaveTextContaining(assert); + } + + //--------------------------------------------------------- + + async emailPlaceholderText(data,assert) + { + await this.forgotPassword(data) + await expect(Sl.dusk(data.elements.email)).toHaveAttributeContaining(data.attr_type,assert) + } + + //--------------------------------------------------------- + + async sendCodeButtonText(data,assert) + { + await this.forgotPassword(data) + await expect(Sl.dusk(data.elements.send_code_button)).toHaveTextContaining(assert) + } + + //--------------------------------------------------------- + + /*async (data,assert) + { + await this.forgotPassword(data) + await expect(Sl.dusk(data.elements.send_code_button)).toHaveTextContaining(assert) + }*/ + } module.exports = new FpasswordPage(); //---------------------------------------------------------------------------------------------------------------------- \ No newline at end of file diff --git a/specs/forgot_password.spec.js b/specs/forgot_password.spec.js index 617d10a..f15c484 100644 --- a/specs/forgot_password.spec.js +++ b/specs/forgot_password.spec.js @@ -14,9 +14,60 @@ describe(Page.groupId(params), async () => { it(Page.testId(params), async () => { inputs = Data.groups[0].tests[0]; - console.log(color.green('params.test'), inputs); await Page.open() - await Page.forgotPassword( + await Page.pageHeading( + Data, + inputs.assert + ); + }) + + //------------------------------------------------------------------------------------------------------------------ + + params.test = Data.groups[0].tests[1]; + + it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[1]; + await Page.open() + await Page.pageHeading( + Data, + inputs.assert + ); + }) + + //------------------------------------------------------------------------------------------------------------------ + + params.test = Data.groups[0].tests[2]; + + it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[2]; + await Page.open() + await Page.pageSubheading( + Data, + inputs.assert + ); + }) + + //------------------------------------------------------------------------------------------------------------------ + + params.test = Data.groups[0].tests[3]; + + it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[3]; + await Page.open() + await Page.emailPlaceholderText( + Data, + inputs.assert + ); + }) + + //------------------------------------------------------------------------------------------------------------------ + + params.test = Data.groups[0].tests[4]; + + it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[4]; + await Page.open() + await Page.sendCodeButtonText( Data, inputs.assert ); From f604299676ace4efb6364efdf3c9415fb43ff7dc Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Sat, 19 Nov 2022 20:00:23 +0530 Subject: [PATCH 58/60] Updated test scripts --- data/forgot_password.js | 54 ++++++++++++++++++- pageobjects/forgot_password.page.js | 83 +++++++++++++++++++++++++++-- specs/forgot_password.spec.js | 77 ++++++++++++++++++++++++++ 3 files changed, 209 insertions(+), 5 deletions(-) diff --git a/data/forgot_password.js b/data/forgot_password.js index a1fe5ca..7849136 100644 --- a/data/forgot_password.js +++ b/data/forgot_password.js @@ -2,6 +2,7 @@ class Fpassword{ constructor() { this.attr_type = 'placeholder'; + this.mailtrap_path = 'https://mailtrap.io/signin'; this.params = { group:{ count: null, @@ -16,6 +17,13 @@ class Fpassword{ alert_box: 'alertdialog', page_heading: 'h3', page_subheading: 'p', + mail_email: 'user_email', + mail_next_button: '=Next', + mail_password: 'user_password', + mail_login_button: 'commit', + mail_recent_email: '=Reset Password Email', + mail_senders_email: 'span=Speaker ', + mail_receiver_email: 'span=' } this.params.page = { @@ -59,12 +67,54 @@ class Fpassword{ expect: "Label text should be present in 'send code' button of the forgot password page.", assert: "Send code" }, - /*{ + { count: 1.6, name: "Verify that the forgot password functionality when the user enters the unregistered email id and clicks on the send code button.", expect: "user should not get the code or link and and an error message should be displayed.", + email: "demo@gmail.com", assert: "No user exist" - }*/ + }, + { + count: 1.7, + name: "Verify the forgot password functionality by trying to reset the password without entering the email address .", + expect: "User should not be able to reset the new password and an error message should be displayed.", + email: "", + assert: "The email field is required." + }, + { + count: 1.8, + name: "Verify the forgot password functionality by trying to reset the password by entering only space in email text-field", + expect: "User should not be able to reset the new password and an error message should be displayed.", + email: " ", + assert: "The email field is required." + }, + { + count: 1.9, + name: "Verify the user will get the reset password email from valid sender email", + expect: " User should get the reset password email from valid sender.", + email: "satyajeet.s001@webreinvent.com", + mail_email: "dev@webreinvent.com", + mail_password: "b$6hEHExKH955bP", + assert: "Speaker " + }, + { + count: 2.1, + name: "Verify the user will get the reset password email to valid receiver or valid email", + expect: " User should get the reset password email to valid email.", + email: "satyajeet.s001@webreinvent.com", + mail_email: "dev@webreinvent.com", + mail_password: "b$6hEHExKH955bP", + assert: "" + }, + { + count: 2.2, + name: "Verify the user will get the ", + expect: " User should get ther.", + email: "satyajeet.s001@webreinvent.com", + mail_email: "dev@webreinvent.com", + mail_password: "b$6hEHExKH955bP", + assert: "Click to Reset" + }, ] } ] diff --git a/pageobjects/forgot_password.page.js b/pageobjects/forgot_password.page.js index 524e59b..07d9cc7 100644 --- a/pageobjects/forgot_password.page.js +++ b/pageobjects/forgot_password.page.js @@ -1,5 +1,6 @@ const Page = require('./../Page'); const Sl = require('./../Selector'); +const click = require("webdriverio/build/commands/element/click"); /** * sub page containing specific selectors and methods for a specific page @@ -62,11 +63,87 @@ class FpasswordPage extends Page { //--------------------------------------------------------- - /*async (data,assert) + async invalidEmailAssertion(data,email,assert) { await this.forgotPassword(data) - await expect(Sl.dusk(data.elements.send_code_button)).toHaveTextContaining(assert) - }*/ + await Sl.dusk(data.elements.email).setValue(email) + await Sl.dusk(data.elements.send_code_button).click() + await expect(Sl.role(data.elements.alert_box)).toHaveTextContaining(assert) + } + + //--------------------------------------------------------- + + async refresh() + { + await browser.refresh(); + } + + //--------------------------------------------------------- + + async validEmail(data,email,assert,mail_email,mail_password) + { + await this.forgotPassword(data) + await Sl.dusk(data.elements.email).setValue(email) + await Sl.dusk(data.elements.send_code_button).click() + await browser.url(data.mailtrap_path) + await Sl.id(data.elements.mail_email).setValue(mail_email) + await Sl.$(data.elements.mail_next_button).click() + await Sl.id(data.elements.mail_password).setValue(mail_password) + const login = await Sl.name(data.elements.mail_login_button) + login.scrollIntoView() + await browser.pause(2000) + login.click() + await Sl.$(data.elements.mail_recent_email).click() + await expect(Sl.$(data.elements.mail_senders_email)).toHaveTextContaining(assert) + } + + //--------------------------------------------------------- + + async validEmailreceiver(data,email,assert,mail_email,mail_password) + { + await this.forgotPassword(data) + await Sl.dusk(data.elements.email).setValue(email) + await Sl.dusk(data.elements.send_code_button).click() + await browser.url(data.mailtrap_path) + await Sl.id(data.elements.mail_email).setValue(mail_email) + await Sl.$(data.elements.mail_next_button).click() + await browser.pause(3000); + await Sl.id(data.elements.mail_password).setValue(mail_password) + const login = await Sl.name(data.elements.mail_login_button) + login.scrollIntoView() + await browser.pause(2000) + login.click() + await Sl.$(data.elements.mail_recent_email).click() + await expect(Sl.$(data.elements.mail_receiver_email)).toHaveTextContaining(assert) + } + + //--------------------------------------------------------- + + async validEmailLink(data,email,assert,mail_email,mail_password) + { + await this.forgotPassword(data) + await Sl.dusk(data.elements.email).setValue(email) + await Sl.dusk(data.elements.send_code_button).click() + await browser.url(data.mailtrap_path) + await browser.pause(3000) + await Sl.id(data.elements.mail_email).setValue(mail_email) + await browser.pause(3000) + await Sl.$(data.elements.mail_next_button).click() + await Sl.id(data.elements.mail_password).setValue(mail_password) + const login = await Sl.name(data.elements.mail_login_button) + login.scrollIntoView() + await browser.pause(2000) + login.click() + await browser.pause(3000) + await Sl.$(data.elements.mail_recent_email).click() + await browser.pause(3000) + //const frame = await Sl.$('iframe[data-test-id="message_view_iframe"]') + const iframe = await Sl.testid("message_view_iframe") + browser.switchToFrame(iframe) + await browser.pause(5000) + await expect(Sl.$('=Click to Reset')).toHaveTextContaining(assert) + //await expect(Sl.$(data.elements.page_subheading)).toHaveTextContaining(assert) + } } module.exports = new FpasswordPage(); diff --git a/specs/forgot_password.spec.js b/specs/forgot_password.spec.js index f15c484..3adeba7 100644 --- a/specs/forgot_password.spec.js +++ b/specs/forgot_password.spec.js @@ -72,6 +72,83 @@ describe(Page.groupId(params), async () => { inputs.assert ); }) + + //------------------------------------------------------------------------------------------------------------------ + + params.test = Data.groups[0].tests[5]; + + it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[5]; + await Page.open() + await Page.invalidEmailAssertion( + Data, + inputs.email, + inputs.assert + ); + }) + + //------------------------------------------------------------------------------------------------------------------ + + params.test = Data.groups[0].tests[6]; + + it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[6]; + await Page.open() + await Page.invalidEmailAssertion( + Data, + inputs.email, + inputs.assert + ); + }) + + //------------------------------------------------------------------------------------------------------------------ + + params.test = Data.groups[0].tests[7]; + + it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[7]; + await Page.open() + await Page.invalidEmailAssertion( + Data, + inputs.email, + inputs.assert + ); + }) + + //------------------------------------------------------------------------------------------------------------------ + + params.test = Data.groups[0].tests[8]; + + it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[8]; + await Page.open() + await Page.validEmail( + Data, + inputs.email, + inputs.assert, + inputs.mail_email, + inputs.mail_password + ); + }) + + //------------------------------------------------------------------------------------------------------------------ + + params.test = Data.groups[0].tests[9]; + + it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[9]; + await Page.open() + await Page.validEmailreceiver( + Data, + inputs.email, + inputs.assert, + inputs.mail_email, + inputs.mail_password + ); + }) + + + //------------------------------------------------------------------------------------------------------------------ }) From dc667a9defd5b7b8c2e61131764d86adf3e8b925 Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Wed, 23 Nov 2022 12:15:45 +0530 Subject: [PATCH 59/60] Updated POM and test scripts --- Page.js | 4 -- data/forgot_password.js | 14 ++----- pageobjects/forgot_password.page.js | 61 +++++++---------------------- specs/forgot_password.spec.js | 12 +++--- 4 files changed, 25 insertions(+), 66 deletions(-) diff --git a/Page.js b/Page.js index ab1aa0b..ccf8fc1 100644 --- a/Page.js +++ b/Page.js @@ -32,10 +32,6 @@ module.exports = class Page { expect: null, } }; - - - - } //------------------------------------------------- diff --git a/data/forgot_password.js b/data/forgot_password.js index 7849136..633ccd1 100644 --- a/data/forgot_password.js +++ b/data/forgot_password.js @@ -23,7 +23,9 @@ class Fpassword{ mail_login_button: 'commit', mail_recent_email: '=Reset Password Email', mail_senders_email: 'span=Speaker ', - mail_receiver_email: 'span=' + mail_receiver_email: 'span=', + mail_user_profile: 'span=dev@webreinvent.com', + mail_logout: '=Logout', } this.params.page = { @@ -106,15 +108,7 @@ class Fpassword{ mail_password: "b$6hEHExKH955bP", assert: "" }, - { - count: 2.2, - name: "Verify the user will get the ", - expect: " User should get ther.", - email: "satyajeet.s001@webreinvent.com", - mail_email: "dev@webreinvent.com", - mail_password: "b$6hEHExKH955bP", - assert: "Click to Reset" - }, + ] } ] diff --git a/pageobjects/forgot_password.page.js b/pageobjects/forgot_password.page.js index 07d9cc7..b1cfd02 100644 --- a/pageobjects/forgot_password.page.js +++ b/pageobjects/forgot_password.page.js @@ -73,14 +73,7 @@ class FpasswordPage extends Page { //--------------------------------------------------------- - async refresh() - { - await browser.refresh(); - } - - //--------------------------------------------------------- - - async validEmail(data,email,assert,mail_email,mail_password) + async validEmailLogin(data,email,mail_email,mail_password) { await this.forgotPassword(data) await Sl.dusk(data.elements.email).setValue(email) @@ -90,59 +83,35 @@ class FpasswordPage extends Page { await Sl.$(data.elements.mail_next_button).click() await Sl.id(data.elements.mail_password).setValue(mail_password) const login = await Sl.name(data.elements.mail_login_button) - login.scrollIntoView() await browser.pause(2000) login.click() await Sl.$(data.elements.mail_recent_email).click() + } + + //--------------------------------------------------------- + + async emailSenderAssertion(data,email,mail_email,mail_password,assert) + { + await this.validEmailLogin(data,email,mail_email,mail_password) await expect(Sl.$(data.elements.mail_senders_email)).toHaveTextContaining(assert) + await this.mailLogout(data) } //--------------------------------------------------------- - async validEmailreceiver(data,email,assert,mail_email,mail_password) + async emailReceiverAssertion(data,email,mail_email,mail_password,assert) { - await this.forgotPassword(data) - await Sl.dusk(data.elements.email).setValue(email) - await Sl.dusk(data.elements.send_code_button).click() - await browser.url(data.mailtrap_path) - await Sl.id(data.elements.mail_email).setValue(mail_email) - await Sl.$(data.elements.mail_next_button).click() - await browser.pause(3000); - await Sl.id(data.elements.mail_password).setValue(mail_password) - const login = await Sl.name(data.elements.mail_login_button) - login.scrollIntoView() - await browser.pause(2000) - login.click() - await Sl.$(data.elements.mail_recent_email).click() + await this.validEmailLogin(data,email,mail_email,mail_password) await expect(Sl.$(data.elements.mail_receiver_email)).toHaveTextContaining(assert) + await this.mailLogout(data) } //--------------------------------------------------------- - async validEmailLink(data,email,assert,mail_email,mail_password) + async mailLogout(data) { - await this.forgotPassword(data) - await Sl.dusk(data.elements.email).setValue(email) - await Sl.dusk(data.elements.send_code_button).click() - await browser.url(data.mailtrap_path) - await browser.pause(3000) - await Sl.id(data.elements.mail_email).setValue(mail_email) - await browser.pause(3000) - await Sl.$(data.elements.mail_next_button).click() - await Sl.id(data.elements.mail_password).setValue(mail_password) - const login = await Sl.name(data.elements.mail_login_button) - login.scrollIntoView() - await browser.pause(2000) - login.click() - await browser.pause(3000) - await Sl.$(data.elements.mail_recent_email).click() - await browser.pause(3000) - //const frame = await Sl.$('iframe[data-test-id="message_view_iframe"]') - const iframe = await Sl.testid("message_view_iframe") - browser.switchToFrame(iframe) - await browser.pause(5000) - await expect(Sl.$('=Click to Reset')).toHaveTextContaining(assert) - //await expect(Sl.$(data.elements.page_subheading)).toHaveTextContaining(assert) + await Sl.$(data.elements.mail_user_profile).click(); + await Sl.$(data.elements.mail_logout).click(); } } diff --git a/specs/forgot_password.spec.js b/specs/forgot_password.spec.js index 3adeba7..cebfff5 100644 --- a/specs/forgot_password.spec.js +++ b/specs/forgot_password.spec.js @@ -122,12 +122,12 @@ describe(Page.groupId(params), async () => { it(Page.testId(params), async () => { inputs = Data.groups[0].tests[8]; await Page.open() - await Page.validEmail( + await Page.emailSenderAssertion( Data, inputs.email, - inputs.assert, inputs.mail_email, - inputs.mail_password + inputs.mail_password, + inputs.assert ); }) @@ -138,12 +138,12 @@ describe(Page.groupId(params), async () => { it(Page.testId(params), async () => { inputs = Data.groups[0].tests[9]; await Page.open() - await Page.validEmailreceiver( + await Page.emailReceiverAssertion( Data, inputs.email, - inputs.assert, inputs.mail_email, - inputs.mail_password + inputs.mail_password, + inputs.assert ); }) From afdeaeacfa4c4a8757c1a7d0799c03952a63a2b0 Mon Sep 17 00:00:00 2001 From: Satyajeet Date: Wed, 23 Nov 2022 19:55:15 +0530 Subject: [PATCH 60/60] forgot password: updated --- data/forgot_password.js | 9 +++++++++ pageobjects/forgot_password.page.js | 19 +++++++++++++++++++ specs/forgot_password.spec.js | 16 ++++++++++++++++ 3 files changed, 44 insertions(+) diff --git a/data/forgot_password.js b/data/forgot_password.js index 633ccd1..643e867 100644 --- a/data/forgot_password.js +++ b/data/forgot_password.js @@ -108,6 +108,15 @@ class Fpassword{ mail_password: "b$6hEHExKH955bP", assert: "" }, + { + count: 2.2, + name: "Verify reset password link or button is clickable", + expect: "Reset password link or button should be clickable and reset password page should be displayed", + email: "satyajeet.s001@webreinvent.com", + mail_email: "dev@webreinvent.com", + mail_password: "b$6hEHExKH955bP", + //assert: "" + }, ] } diff --git a/pageobjects/forgot_password.page.js b/pageobjects/forgot_password.page.js index b1cfd02..82e1f49 100644 --- a/pageobjects/forgot_password.page.js +++ b/pageobjects/forgot_password.page.js @@ -108,6 +108,25 @@ class FpasswordPage extends Page { //--------------------------------------------------------- + async resetLinkClick(data,email,mail_email,mail_password) + { + await this.validEmailLogin(data,email,mail_email,mail_password) + //await browser.url("https://v6.getdemo.dev/demo/gbs-dev/develop/public/backend#/reset-password/637dfae3e3bd1") + //await this.mailLogout(data) + //await browser.waitForExist('iframe[data-test-id="message_view_iframe"]'); + const my_frame = await Sl.$("iframe[data-test-id='message_view_iframe']") + //await expect(my_frame).toExist() + //const my_frame = await Sl.$('#iframe_message') + // const iframe = await Sl.testid("message_view_iframe") + //await browser.frame(my_frame) + await browser.switchToFrame(my_frame) + //await Sl.$('=https://v6.getdemo.dev/demo/gbs-dev/develop/public/backend#/reset-password/637dda3980ff2').click() + //await Sl.$('=Click to Reset').click() + await browser.pause(7000) + } + + //--------------------------------------------------------- + async mailLogout(data) { await Sl.$(data.elements.mail_user_profile).click(); diff --git a/specs/forgot_password.spec.js b/specs/forgot_password.spec.js index cebfff5..32eec0f 100644 --- a/specs/forgot_password.spec.js +++ b/specs/forgot_password.spec.js @@ -147,6 +147,22 @@ describe(Page.groupId(params), async () => { ); }) + //------------------------------------------------------------------------------------------------------------------ + + params.test = Data.groups[0].tests[10]; + + it(Page.testId(params), async () => { + inputs = Data.groups[0].tests[10]; + await Page.open() + await Page.resetLinkClick( + Data, + inputs.email, + inputs.mail_email, + inputs.mail_password, + //inputs.assert + ); + }) + //------------------------------------------------------------------------------------------------------------------