I am new on automation selenium using javascript, I have simple code like below that I am using faker data to generate random email, question is incase I have data table on scenario outline 2 types, when I run the code some how the data for email for second loop is using same data that generated on first loop, question is how to get different data for 2nd loop?
#feature file
@RegisterMerchant
Feature: Register new merchant
Scenario Outline: As a new User, I want to create new merchant account
Given User is on register page
When User fill register form for "<businessChannel>" merchant
And User click register
Then User should see success pop up message
Examples:
| businessChannel |
| offline |
| online |
#data file
const faker = require('faker')
class registerData {
email = faker.name.firstName().toLowerCase() + faker.name.lastName().toLowerCase() + "@mailinator.com"
}
module.exports = new registerData()
#step file
const { Given, When, Then } = require('cucumber');
const registerPage = require('../PageObjects/registerMerchantPage')
Given(/^User is on register page$/, () => {
registerPage.isOnRegisterPage()
});
When(/^User fill register form for "([^"]*)" merchant$/, (businessChannel) => {
registerPage.inputRegisterForm(businessChannel) ..
});
When(/^User click register$/, () => {
registerPage.signUpButton.click()
});
Then(/^User should see success pop up message$/, () => {
registerPage.showPopUpSuccess()
});
Actual the 2nd iteration still using 1st faker data
#page object file
inputRegisterForm(businessChannel) {
this.emailAddressField.addValue(registerData.email)
switch (businessChannel) {
case "online":
this.onlineRadBtn.click()
break;
case "offline":
this.offlineRadBtn.click()
break;
}
}
solved by add function for this data file :
email = faker.name.firstName().toLowerCase() + faker.name.lastName().toLowerCase() + "@mailinator.com"
to be like this
#data file
class registerData {
generateRegisterData() {
this.email = faker.name.firstName().toLowerCase() + faker.name.lastName().toLowerCase() + "@mailinator.com"
console.log("Test")
}
email = ""
#page object file
inputRegisterForm(businessChannel) {
registerData.generateRegisterData()
this.emailAddressField.addValue(registerData.email)
switch (businessChannel) {
case "online":
this.onlineRadBtn.click()
break;
case "offline":
this.offlineRadBtn.click()
break;
}
}