steps:tests for Step1,2

This commit is contained in:
dennistikhomirov 2018-09-04 01:38:12 -07:00
parent 5a262ae3b4
commit 9466164f47
9 changed files with 603 additions and 370 deletions

View File

@ -16,7 +16,7 @@ const logger = createLogger({
myFormat
),
transports: [
//new (winston.transports.Console)(),
new (winston.transports.Console)(),
new (winston.transports.File)({filename: tempOutputFile})
]
});

View File

@ -5,7 +5,7 @@
"scripts": {
"startGanache": "npm install -g ganache-cli && ganache-cli &",
"e2eMinted": "npm run e2eMintedUI && npm run e2eMintedWhitelist && npm run e2eMintedMincap",
"e2eMintedUI": "mocha ./test/e2eMintedUI.js",
"e2eMintedUI": "mocha -b ./test/e2eMintedUI.js",
"e2eMintedWhitelist": "mocha ./test/e2eMintedWhitelist.js",
"e2eMintedMincap": "mocha ./test/e2eMintedMincap.js",
"e2eDutch": "npm run e2eDutchUI && npm run e2eDutchWhitelist && npm run e2eDutchMincap",

View File

@ -158,11 +158,11 @@ class ContributionPage extends Page {
return (await super.waitUntilDisplayed(countdownTimerStatus,Twaiting));
}
async clickButtonOK() {
/* async clickButtonOK() {
logger.info(this.name + "clickButtonOK ");
return await super.clickWithWait(buttonOk);
}
*/
async fillContribute(amount) {
logger.info(this.name + "fillContribute");
return await super.fillWithWait(fieldContribute, amount);
@ -217,10 +217,11 @@ class ContributionPage extends Page {
return await super.waitUntilDisplayed(errorNotice, Twaiting);
}
async waitUntilShowUpWarning(Twaiting) {
/* async waitUntilShowUpWarning(Twaiting) {
logger.info(this.name + "waitUntilShowUpWarning ");
return await super.waitUntilDisplayed(buttonOk, Twaiting);
}
*/
}
module.exports.InvestPage = ContributionPage;

View File

@ -6,392 +6,435 @@ const By = require('selenium-webdriver/lib/by').By;
const loader = By.className("loading-container");
const loaderNotDisplayed = By.className("loading-container notdisplayed");
const titles = By.className("title");
const buttonOk = By.className("swal2-confirm swal2-styled");
class Page {
constructor(driver) {
this.driver = driver;
this.titleElement;
}
constructor(driver) {
this.driver = driver;
this.titleElement;
}
async pressKey(key, times) {
logger.info("press key " + key + " " + times + " times")
try {
const action = this.driver.actions();
for (let i = 0; i < times; i++)
await action.sendKeys(key).perform();
return true;
}
catch (err) {
logger.info("Error: " + err);
return false;
}
}
async pressKey(key, times) {
logger.info("press key " + key + " " + times + " times")
try {
const action = this.driver.actions();
for ( let i = 0; i < times; i++ )
await action.sendKeys(key).perform();
return true;
}
catch ( err ) {
logger.info("Error: " + err);
return false;
}
}
async waitUntilDisplayed(element, Twaiting) {
logger.info("wait until displayed");
let counter = Twaiting;
if (counter === undefined) counter = 180;
try {
do {
await this.driver.sleep(333);
if (await this.isElementDisplayed(element)) return true;
} while (counter-- > 0);
return false;
}
catch (err) {
logger.info("Error: " + err);
return false;
}
}
async waitUntilDisplayed(element, Twaiting) {
logger.info("wait until displayed");
let counter = Twaiting;
if ( counter === undefined ) counter = 180;
try {
do {
await this.driver.sleep(333);
if ( await this.isElementDisplayed(element) ) return true;
} while ( counter-- > 0 );
return false;
}
catch ( err ) {
logger.info("Error: " + err);
return false;
}
}
async waitUntilLocated(element, Twaiting) {
logger.info("wait until located");
let counter = Twaiting;
if (counter === undefined) counter = 180;
try {
do {
await this.driver.sleep(333);
if (await this.isElementLocated(element)) return true;
} while (counter-- > 0);
async waitUntilLocated(element, Twaiting) {
logger.info("wait until located");
let counter = Twaiting;
if ( counter === undefined ) counter = 180;
try {
do {
await this.driver.sleep(333);
if ( await this.isElementLocated(element) ) return true;
} while ( counter-- > 0 );
return false;
}
catch (err) {
logger.info("Error: " + err);
return false;
}
}
return false;
}
catch ( err ) {
logger.info("Error: " + err);
return false;
}
}
async isElementLocated(element) {
logger.info("is element located: ");
return (await this.driver.findElements(element)).length > 0;
}
async isElementSelected(element) {
logger.info("isElementSelected");
return await this.driver.findElement(element).isSelected();
}
async isElementDisplayed(element) {
logger.info("is element displayed: ");
try {
if (element.constructor.name !== "WebElement") {
return await this.driver.findElement(element).isDisplayed();
}
else
return element.isDisplayed();
}
catch (err) {
logger.info("Error:" + err);
return false;
}
}
async isElementLocated(element) {
logger.info("is element located: ");
return (await this.driver.findElements(element)).length > 0;
}
async getElement(element, Twaiting) {
logger.info("getElement: " + element);
try {
if (Twaiting === undefined) Twaiting = 180;
if (element.constructor.name !== "WebElement")
return await this.driver.wait(webdriver.until.elementLocated(element), Twaiting * 333);
else return element;
}
catch (err) {
logger.info("Error: " + err);
return null;
}
}
async isElementDisplayed(element) {
logger.info("is element displayed: ");
try {
if ( element.constructor.name !== "WebElement" ) {
return await this.driver.findElement(element).isDisplayed();
}
else
return element.isDisplayed();
}
catch ( err ) {
logger.info("Error:" + err);
return false;
}
}
async isElementDisabled(element) {
logger.info("isElementDisabled " + element);
try {
let field = await this.getElement(element);
return !await field.isEnabled()
}
catch (err) {
logger.info("element enabled or does not present");
return false;
}
}
async getElement(element, Twaiting) {
logger.info("getElement: " + element);
try {
if ( Twaiting === undefined ) Twaiting = 180;
if ( element.constructor.name !== "WebElement" )
return await this.driver.wait(webdriver.until.elementLocated(element), Twaiting * 333);
else return element;
}
catch ( err ) {
logger.info("Error: " + err);
return null;
}
}
async getAttribute(element, attr) {
logger.info("get attribute = " + attr + " for element = " + element);
try {
let field = await this.getElement(element);
let result = await field.getAttribute(attr);
logger.info("received value= " + result);
return result;
}
catch (err) {
logger.info("Error: " + err);
return false;
}
}
async isElementDisabled(element) {
logger.info("isElementDisabled " + element);
try {
let field = await this.getElement(element);
return !await field.isEnabled()
}
catch ( err ) {
logger.info("element enabled or does not present");
return false;
}
}
async getTextForElement(element, Twaiting) {
logger.info("get text for element : ");
try {
let field = await this.getElement(element, Twaiting);
let result = await field.getText();
if (result.length < 100) logger.info("text received: " + result);
return result;
}
catch (err) {
logger.info("Error: " + err);
return false;
}
}
async getAttribute(element, attr) {
logger.info("get attribute = " + attr + " for element = " + element);
try {
let field = await this.getElement(element);
let result = await field.getAttribute(attr);
logger.info("received value= " + result);
return result;
}
catch ( err ) {
logger.info("Error: " + err);
return false;
}
}
async getURL() {
logger.info("get current page URL ");
return await this.driver.getCurrentUrl();
}
async getTextForElement(element, Twaiting) {
logger.info("get text for element : ");
try {
let field = await this.getElement(element, Twaiting);
let result = await field.getText();
if ( result.length < 100 ) logger.info("text received: " + result);
return result;
}
catch ( err ) {
logger.info("Error: " + err);
return false;
}
}
async open(url) {
logger.info("open: " + url);
try {
await this.driver.get(url);
logger.info("Current URL: " + await this.driver.getCurrentUrl());
logger.info("Current HANDLE: " + await this.driver.getWindowHandle());
return true;
}
catch (err) {
logger.info("Error: " + err);
return false;
}
}
async getURL() {
logger.info("get current page URL ");
return await this.driver.getCurrentUrl();
}
async isLocatedLoader() {
logger.info("is loader displayed :");
try {
return await this.isElementLocated(loader);
}
catch (err) {
logger.info("Error: " + err);
return false;
}
}
async open(url) {
logger.info("open: " + url);
try {
await this.driver.get(url);
logger.info("Current URL: " + await this.driver.getCurrentUrl());
logger.info("Current HANDLE: " + await this.driver.getWindowHandle());
return true;
}
catch ( err ) {
logger.info("Error: " + err);
return false;
}
}
async waitUntilLoaderGone() {
logger.info("wait until loader gone :");
if (!await this.isLocatedLoader()) return true;
else
return await this.waitUntilLocated(loaderNotDisplayed,180);
}
async isLocatedLoader() {
logger.info("is loader displayed :");
try {
return await this.isElementLocated(loader);
}
catch ( err ) {
logger.info("Error: " + err);
return false;
}
}
async refresh() {
logger.info("refresh :");
try {
await this.driver.navigate().refresh();
return true;
}
catch (err) {
logger.info("Error: " + err);
return false;
}
}
async waitUntilLoaderGone() {
logger.info("wait until loader gone :");
if ( !await this.isLocatedLoader() ) return true;
else
return await this.waitUntilLocated(loaderNotDisplayed, 180);
}
async clickWithWait(element, Twaiting) {
logger.info("click with wait: " + element);
try {
let field = await this.getElement(element, Twaiting);
async refresh() {
logger.info("refresh :");
try {
await this.driver.navigate().refresh();
return true;
}
catch ( err ) {
logger.info("Error: " + err);
return false;
}
}
await field.click();
return true;
}
catch (err) {
logger.info("Error: " + err);
return false;
}
}
async clickWithWait(element, Twaiting) {
logger.info("click with wait: " + element);
try {
let field = await this.getElement(element, Twaiting);
async fillWithWait(element, k, Twaiting) {
logger.info("fill with wait : value = " + k);
try {
let field = await this.getElement(element, Twaiting);
if (field === null) return false;
await field.sendKeys(k);
return true;
}
catch (err) {
logger.info("Element " + element + " has not appeared in" + Twaiting * 333 / 1000 + " sec.");
return false;
}
}
await field.click();
return true;
}
catch ( err ) {
logger.info("Error: " + err);
return false;
}
}
async findWithWait(element, Twaiting) {
logger.info("find with wait ");
try {
if (Twaiting === undefined) Twaiting = 180;
await this.driver.wait(webdriver.until.elementLocated(element), Twaiting * 333);
return await this.driver.findElements(element);
}
catch (err) {
logger.info("Element " + element + " have not appeared in" + Twaiting * 333 / 1000 + " sec.");
return null;
}
}
async fillWithWait(element, k, Twaiting) {
logger.info("fill with wait : value = " + k);
try {
let field = await this.getElement(element, Twaiting);
if ( field === null ) return false;
await field.sendKeys(k);
return true;
}
catch ( err ) {
logger.info("Element " + element + " has not appeared in" + Twaiting * 333 / 1000 + " sec.");
return false;
}
}
async findWithWait(element, Twaiting) {
logger.info("find with wait ");
try {
if ( Twaiting === undefined ) Twaiting = 180;
await this.driver.wait(webdriver.until.elementLocated(element), Twaiting * 333);
return await this.driver.findElements(element);
}
catch ( err ) {
logger.info("Element " + element + " have not appeared in" + Twaiting * 333 / 1000 + " sec.");
return null;
}
}
async clearField(element) {
try {
logger.info("clear field :");
let field = await this.getElement(element);
let content = "";
let counter = 3;
do {
await field.click();
await this.driver.sleep(200);
for ( let i = 0; i < 40; i++ ) {
await field.sendKeys(key.BACK_SPACE);
}
await this.driver.sleep(200);
content = await field.getAttribute('value');
if ( content === "" ) return true;
} while ( counter-- > 0 );
return false;
}
catch ( err ) {
logger.info("Error: " + err);
return false;
}
}
async clearField(element) {
try {
logger.info("clear field :");
let field = await this.getElement(element);
let content = "";
let counter = 3;
do {
await field.click();
await this.driver.sleep(200);
for (let i = 0; i < 40; i++) {
await field.sendKeys(key.BACK_SPACE);
}
await this.driver.sleep(200);
content = await field.getAttribute('value');
if (content === "") return true;
} while (counter-- > 0);
return false;
}
catch (err) {
logger.info("Error: " + err);
return false;
}
}
async clearFieldFromStart(element) {
try {
logger.info("clearFieldFromStart");
let field = await this.getElement(element);
let counter = 1;
do {
await this.driver.sleep(200);
for ( let i = 0; i < 10; i++ ) {
await field.sendKeys(key.ARROW_RIGHT);
}
await this.driver.sleep(200);
for ( let i = 0; i < 10; i++ ) {
await field.sendKeys(key.BACK_SPACE);
}
await this.driver.sleep(200);
async clearFieldFromStart(element) {
try {
logger.info("clearFieldFromStart");
let field = await this.getElement(element);
let counter = 1;
do {
await this.driver.sleep(200);
for (let i = 0; i < 10; i++) {
await field.sendKeys(key.ARROW_RIGHT);
}
await this.driver.sleep(200);
for (let i = 0; i < 10; i++) {
await field.sendKeys(key.BACK_SPACE);
}
await this.driver.sleep(200);
} while (counter-- > 0);
return true;
}
catch (err) {
logger.info("Error: " + err);
return false;
}
}
} while ( counter-- > 0 );
return true;
}
catch ( err ) {
logger.info("Error: " + err);
return false;
}
}
async switchToNextPage() {
logger.info("switch to next tab :");
let allHandles = [];
let curHandle;
try {
allHandles = await this.driver.getAllWindowHandles();
curHandle = await this.driver.getWindowHandle();
if ( allHandles.length > 2 ) {
let arr = [];
arr[0] = allHandles[0];
arr[1] = allHandles[1];
allHandles = arr;
logger.info("Browser has " + allHandles.length + " tabs");
}
let handle;
for ( let i = 0; i < allHandles.length; i++ ) {
if ( curHandle !== allHandles[i] ) {
handle = allHandles[i];
break;
}
}
await this.driver.switchTo().window(handle);
logger.info("Current handle = " + curHandle);
logger.info("Switch to handle = " + handle);
await this.driver.sleep(500);
return true;
}
catch ( err ) {
logger.info("can't switch to next tab " + err);
logger.info("current handle: " + curHandle);
return false;
}
}
async goBack() {
logger.info("goBack");
try {
this.driver.navigate().back();
return true;
}
catch ( err ) {
logger.info("Error: " + err);
return false;
}
}
async goForward() {
logger.info("goForward");
try {
this.driver.navigate().forward();
return true;
}
catch ( err ) {
logger.info("Error: " + err);
return false;
}
}
async getChildFromElementByClassName(child, element) {
logger.info("getChildFromElementByClassName");
try {
return await element.findElements(By.className(child.toString()));
}
catch ( err ) {
logger.info("Error: " + err);
return null;
}
}
async switchToNextPage() {
logger.info("switch to next tab :");
let allHandles = [];
let curHandle;
try {
allHandles = await this.driver.getAllWindowHandles();
curHandle = await this.driver.getWindowHandle();
if (allHandles.length > 2) {
let arr = [];
arr[0] = allHandles[0];
arr[1] = allHandles[1];
allHandles = arr;
logger.info("Browser has " + allHandles.length + " tabs");
}
let handle;
for (let i = 0; i < allHandles.length; i++) {
if (curHandle !== allHandles[i]) {
handle = allHandles[i];
break;
}
}
await this.driver.switchTo().window(handle);
logger.info("Current handle = " + curHandle);
logger.info("Switch to handle = " + handle);
await this.driver.sleep(500);
return true;
async initTitles() {
logger.info("initTitles ");
try {
let array = await this.findWithWait(titles);
this.titleElement = array[0];
}
catch ( err ) {
logger.info("Error: " + err);
return null;
}
}
}
catch (err) {
logger.info("can't switch to next tab " + err);
logger.info("current handle: " + curHandle);
return false;
}
}
async getTitleText() {
logger.info("getPageTitle ");
await this.initTitles();
return this.getTextForElement(this.titleElement);
async goBack() {
logger.info("go back :");
try {
this.driver.navigate().back();
return true;
}
catch (err) {
logger.info("Error: " + err);
return false;
}
}
}
async getChildFromElementByClassName(child, element) {
logger.info("getChildFromElementByClassName");
try {
return await element.findElements(By.className(child.toString()));
}
catch (err) {
logger.info("Error: " + err);
return null;
}
}
async waitUntilDisplayedTitle(Twaiting) {
logger.info("waitUntilDisplayedTitle: ");
async initTitles() {
logger.info("initTitles ");
try {
let array = await this.findWithWait(titles);
this.titleElement = array[0];
}
catch (err) {
logger.info("Error: " + err);
return null;
}
}
return (await this.initTitles() !== null)
&& await this.waitUntilDisplayed(this.titleElement, Twaiting);
}
async getTitleText() {
logger.info("getPageTitle ");
await this.initTitles();
return this.getTextForElement(this.titleElement);
async isPresentAlert() {
logger.info("isPresentAlert:")
try {
}
let result = await this.driver.switchTo().alert().getText();
logger.info("alert text: " + result);
return true;
}
catch ( err ) {
logger.info("Error " + err);
return false;
}
}
async waitUntilDisplayedTitle(Twaiting) {
logger.info("waitUntilDisplayedTitle: ");
async acceptAlert() {
logger.info("acceptAlert:")
try {
this.driver.switchTo().alert().accept();
return true;
}
catch ( err ) {
logger.info("Error " + err);
return false;
}
}
return (await this.initTitles() !== null)
&& await this.waitUntilDisplayed(this.titleElement, Twaiting);
}
async waitUntilShowUpWarning(Twaiting) {
logger.info("waitUntilShowUpWarning ");
return await this.waitUntilDisplayed(buttonOk, Twaiting);
}
async isPresentAlert() {
logger.info("isPresentAlert:")
try {
async clickButtonOK() {
logger.info("clickButtonOK ");
return await this.clickWithWait(buttonOk);
}
let result = await this.driver.switchTo().alert().getText();
logger.info("alert text: " + result);
return true;
}
catch (err) {
logger.info("Error " + err);
return false;
}
}
async acceptAlert() {
logger.info("acceptAlert:")
try {
this.driver.switchTo().alert().accept();
return true;
}
catch (err) {
logger.info("Error " + err);
return false;
}
}
async waitUntilHasValue(element, Twaiting) {
logger.info("waitUntilHasValue ");
try {
let field = await this.getElement(element, 3);
if ( field === null ) return false;
if ( Twaiting === undefined ) Twaiting = 180;
do {
await this.driver.sleep(333);
if ( await this.getAttribute(field, "value") !== '' ) return true;
}
while ( Twaiting-- > 0 )
return false;
}
catch ( err ) {
logger.info(err);
return false;
}
}
}

View File

@ -2,6 +2,8 @@ const logger= require('../entity/Logger.js').logger;
const Page=require('./Page.js').Page;
const By = require('selenium-webdriver/lib/by').By;
const buttonContinue= By.className("button button_fill");
const checkboxWhitelistWithCap =By.id('white-list-with-cap');
const checkboxDutchAuction = By.id('dutch-auction');
class WizardStep1 extends Page {
@ -27,6 +29,16 @@ class WizardStep1 extends Page {
}
}
async isSelectedCheckboxWhitelistWithCap() {
logger.info(this.name + "isSelectedCheckboxWhitelistWithCap: ");
return super.isElementSelected(checkboxWhitelistWithCap)
}
async isSelectedCheckboxDutchAuction() {
logger.info(this.name + "isSelectedCheckboxDutchAuction: ");
return super.isElementSelected(checkboxDutchAuction)
}
async isDisplayedButtonContinue() {
logger.info(this.name+": isDisplayedButtonContinue: ");
return await super.isElementDisplayed(buttonContinue);

View File

@ -118,10 +118,18 @@ class WizardStep2 extends Page {
(await this.getTextForElement(this.warningSupply) !== "");
}
async getFieldDecimals() {
logger.info(this.name + "getFieldDecimals ");
return super.getAttribute(fieldDecimals, "value");
async getValueFieldDecimals() {
logger.info(this.name + "getValueFieldDecimals ");
return await super.getAttribute(fieldDecimals, "value");
}
async getValueFieldTicker() {
logger.info(this.name + "getValueFieldTicker ");
return await super.getAttribute(fieldTicker, "value");
}
async getValueFieldName() {
logger.info(this.name + "getValueFieldName ");
return await super.getAttribute(fieldName, "value");
}
async isDisabledDecimals() {
logger.info(this.name + "isDisabledDecimals ");
@ -141,6 +149,16 @@ class WizardStep2 extends Page {
return await super.isElementDisplayed(fieldSupply);
}
async waitUntilDisplayedFieldName(Twaiting) {
logger.info(this.name + "waitUntilDisplayedFieldName: ");
return await super.waitUntilDisplayed(fieldName,Twaiting);
}
async waitUntilHasValueFieldName(Twaiting) {
logger.info(this.name + "waitUntilHasValueFieldName: ");
return await super.waitUntilHasValue(fieldName,Twaiting);
}
}
module.exports.WizardStep2 = WizardStep2;

View File

@ -132,6 +132,13 @@ test.describe(`e2e test for TokenWizard2.0/DutchAuctionCrowdsale. v ${testVersio
return await assert.equal(result, true, "Test FAILED. User is not able to to click DutchAuction checkbox");
});
test.it('Wizard step#1: user is able to click DutchAuction checkbox ',
async function () {
let result = await wizardStep1.waitUntilDisplayedCheckboxDutchAuction()
&& await wizardStep1.clickCheckboxDutchAuction();
return await assert.equal(result, true, "Test FAILED. User is not able to to click DutchAuction checkbox");
});
test.it('Wizard step#1: user is able to open Step2 by clicking button Continue ',
async function () {
let count = 10;

View File

@ -23,9 +23,10 @@ test.describe(`e2e test for TokenWizard2.0/MintedCappedCrowdsale. v ${testVersio
this.slow(1800000);
const user8545_56B2File = './users/user8545_56B2.json';//Owner
const user77_F16AFile = './users/user77_F16A.json';//Investor1
let driver;
let Owner;
let Investor1;
let wallet;
let welcomePage;
@ -45,9 +46,14 @@ test.describe(`e2e test for TokenWizard2.0/MintedCappedCrowdsale. v ${testVersio
let balanceEthOwnerBefore;
let crowdsaleMintedSimple;
const nameText = 'Name'
const tickerText = 'Tick'
const decimalsText = '13'
/////////////////////////////////////////////////////////////////////////
test.before(async function () {
await Utils.copyEnvFromWizard();
const scenarioForUItests = './scenarios/scenarioUItests.json';
@ -59,6 +65,7 @@ test.describe(`e2e test for TokenWizard2.0/MintedCappedCrowdsale. v ${testVersio
Owner = new User(driver, user8545_56B2File);
await Utils.receiveEth(Owner, 20);
Investor1 = new User(driver, user77_F16AFile);
logger.info("Roles:");
logger.info("Owner = " + Owner.account);
@ -66,8 +73,8 @@ test.describe(`e2e test for TokenWizard2.0/MintedCappedCrowdsale. v ${testVersio
logger.info("Owner's balance = :" + balanceEthOwnerBefore / 1e18);
wallet = await Utils.getWalletInstance(driver);
await wallet.activate();//return activated Wallet and empty page
await Owner.setWalletAccount();
//await wallet.activate();//return activated Wallet and empty page
// await Owner.setWalletAccount();
welcomePage = new WizardWelcome(driver, startURL);
wizardStep1 = new WizardStep1(driver);
@ -90,29 +97,47 @@ test.describe(`e2e test for TokenWizard2.0/MintedCappedCrowdsale. v ${testVersio
await fs.ensureDirSync(outputPath);
await fs.copySync(tempOutputPath, outputPath);
//await fs.remove(tempOutputPath);
await driver.quit();
// await driver.quit();
});
///////////////////////// UI TESTS /////////////////////////////////////
test.it('User is able to open wizard welcome page',
test.it('Welcome page: User is able to open wizard welcome page',
async function () {
await welcomePage.open();
let result = await welcomePage.waitUntilDisplayedButtonNewCrowdsale(180);
return await assert.equal(result, true, "Test FAILED. Wizard's page is not available ");
});
test.it('Welcome page: Warning present if user logged out from wallet',
async function () {
let result = await welcomePage.waitUntilShowUpWarning(180)
return await assert.equal(result, true, "Test FAILED. No warning present if user logged out from wallet ");
});
test.it('Welcome page: user can confirm warning',
async function () {
let result = await welcomePage.clickButtonOK()
return await assert.equal(result, true, "Test FAILED. Button Ok doesn\'t present");
});
test.it('Welcome page: No warning present if user logged into wallet',
async function () {
await wallet.activate();//return activated Wallet and empty page
await Owner.setWalletAccount();
let result = await welcomePage.waitUntilShowUpWarning(10)
return await assert.equal(result, false, "Test FAILED. No warning present if user logged out from wallet ");
});
test.it('Welcome page: button NewCrowdsale present ',
async function () {
let result = await welcomePage.isDisplayedButtonNewCrowdsale();
return await assert.equal(result, true, "Test FAILED. Button NewCrowdsale not present ");
});
test.it('Welcome page: button ChooseContract present ',
async function () {
let result = await welcomePage.isDisplayedButtonChooseContract();
return await assert.equal(result, true, "Test FAILED. button ChooseContract not present ");
});
test.it('Welcome page: user is able to open Step1 by clicking button NewCrowdsale ',
@ -120,7 +145,38 @@ test.describe(`e2e test for TokenWizard2.0/MintedCappedCrowdsale. v ${testVersio
let result = await welcomePage.clickButtonNewCrowdsale()
&& await wizardStep1.waitUntilDisplayedCheckboxWhitelistWithCap();
return await assert.equal(result, true, "Test FAILED. User is not able to activate Step1 by clicking button NewCrowdsale");
});
test.it('Step#1: Go back - page keep state of checkbox \'Whitelist with mincap\' ',
async function () {
const result = await wizardStep1.clickCheckboxWhitelistWithCap()
&& await wizardStep1.goBack()
&& await welcomePage.isDisplayedButtonChooseContract()
&& await wizardStep1.goForward()
&& await wizardStep1.waitUntilLoaderGone()
&& await wizardStep1.waitUntilDisplayedCheckboxWhitelistWithCap()
&& await wizardStep1.isSelectedCheckboxWhitelistWithCap()
return await assert.equal(result, true, "Test FAILED. Checkbox changed");
});
test.it('Step#1: Refresh - page keep state of checkbox \'Whitelist with mincap\' ',
async function () {
const result = await wizardStep1.clickCheckboxWhitelistWithCap()
&& await wizardStep1.refresh()
&& await wizardStep1.isSelectedCheckboxWhitelistWithCap()
return await assert.equal(result, true, "Test FAILED. Checkbox changed");
});
test.it('Step#1: Change network - page keep state of checkbox \'Whitelist with mincap\' ',
async function () {
const result = await wizardStep1.clickCheckboxWhitelistWithCap()
&& await Investor1.setWalletAccount()
&& await wizardStep1.waitUntilLoaderGone()
&& await wizardStep1.waitUntilDisplayedCheckboxWhitelistWithCap()
&& await wizardStep1.isSelectedCheckboxWhitelistWithCap()
&& await Owner.setWalletAccount()
&& await wizardStep1.waitUntilLoaderGone()
return await assert.equal(result, true, "Test FAILED. Checkbox changed");
});
test.it('Wizard step#1: user is able to open Step2 by clicking button Continue ',
@ -137,32 +193,70 @@ test.describe(`e2e test for TokenWizard2.0/MintedCappedCrowdsale. v ${testVersio
while ( count-- > 0 );
let result = await wizardStep2.isDisplayedFieldName();
return await assert.equal(result, true, "Test FAILED. User is not able to open Step2 by clicking button Continue");
});
test.it('Wizard step#2: user able to fill out Name field with valid data',
test.it('Step#2: field \'Decimals\' has placeholder 18',
async function () {
await wizardStep2.fillName("name");
let result = await wizardStep2.isDisplayedWarningName();
return await assert.equal(result, false, "Test FAILED. Wizard step#2: user able to fill Name field with valid data ");
return await assert.equal(await wizardStep2.getValueFieldDecimals(), '18', "Test FAILED. Step#2:incorrect placeholder for field 'Decimals'");
});
test.it('Wizard step#2: user able to fill out field \'Name\' with valid data',
async function () {
let result = await wizardStep2.fillName(nameText)
&& await wizardStep2.isDisplayedWarningName();
return await assert.equal(result, false, "Test FAILED. Wizard step#2: field name changed");
});
test.it('Step#2: Go back - page keep state of field \'Name\' ',
async function () {
const result = await wizardStep2.goBack()
&& await wizardStep1.waitUntilDisplayedCheckboxWhitelistWithCap()
&& await wizardStep1.goForward()
&& await wizardStep2.waitUntilLoaderGone()
&& await wizardStep2.waitUntilDisplayedFieldName()
&& await wizardStep2.waitUntilHasValueFieldName();
await assert.equal(result, true, "Test FAILED. Wizard step#2: field name changed");
return await assert.equal(await wizardStep2.getValueFieldName(), nameText, "Test FAILED.Field name changed");
});
test.it('Step#2: Refresh - page keep state of field \'Name\'',
async function () {
const result = await wizardStep2.refresh()
&& await wizardStep2.waitUntilLoaderGone()
&& await wizardStep2.waitUntilDisplayedFieldName()
&& await wizardStep2.waitUntilHasValueFieldName();
await assert.equal(result, true, "Test FAILED. Wizard step#2: field name changed");
return await assert.equal(await wizardStep2.getValueFieldName(), nameText, "Test FAILED.Wizard step#2: field name changed");
});
test.it('Step#2: Change network - page keep state of field \'Name\'',
async function () {
const result = await Investor1.setWalletAccount()
&& await wizardStep2.waitUntilLoaderGone()
&& await wizardStep2.waitUntilHasValueFieldName()
&& (await wizardStep2.getValueFieldName() === nameText)
&& await Owner.setWalletAccount()
&& await wizardStep2.waitUntilLoaderGone()
&& await wizardStep2.waitUntilHasValueFieldName()
&& (await wizardStep2.getValueFieldName() === nameText)
return await assert.equal(result, true, "Test FAILED. Wizard step#2: field name changed");
});
test.it('Wizard step#2: user able to fill out field Ticker with valid data',
async function () {
await wizardStep2.fillTicker("test");
await wizardStep2.fillTicker(tickerText);
let result = await wizardStep2.isDisplayedWarningTicker();
return await assert.equal(result, false, "Test FAILED. Wizard step#2: user is not able to fill out field Ticker with valid data ");
});
test.it('Wizard step#2: user able to fill out Decimals field with valid data',
async function () {
await wizardStep2.fillDecimals("18");
await wizardStep2.fillDecimals(decimalsText);
let result = await wizardStep2.isDisplayedWarningDecimals();
return await assert.equal(result, false, "Test FAILED. Wizard step#2: user is not able to fill Decimals field with valid data ");
});
test.it('Wizard step#2: User is able to download CSV file with reserved tokens',
async function () {
let fileName = './public/reservedAddresses21.csv';
@ -235,13 +329,61 @@ test.describe(`e2e test for TokenWizard2.0/MintedCappedCrowdsale. v ${testVersio
test.it('Wizard step#2: user is able to remove one of reserved tokens ',
async function () {
let amountBefore = await reservedTokensPage.amountAddedReservedTokens();
await reservedTokensPage.removeReservedTokens(1);
let amountAfter = await reservedTokensPage.amountAddedReservedTokens();
return await assert.equal(amountBefore, amountAfter + 1, "Test FAILED. Wizard step#2: user is NOT able to add reserved tokens");
});
test.it('Step#2: Go back - page keep state of each field',
async function () {
const result = await wizardStep2.goBack()
&& await wizardStep1.waitUntilDisplayedCheckboxWhitelistWithCap()
&& await wizardStep1.goForward()
&& await wizardStep2.waitUntilLoaderGone()
&& await wizardStep2.waitUntilHasValueFieldName();
await assert.equal(result, true, "Test FAILED. Wizard step#2: page isn\'t loaded");
await assert.equal(await wizardStep2.getValueFieldName(), nameText, "Test FAILED.Field name changed");
await assert.equal(await wizardStep2.getValueFieldDecimals(), decimalsText, "Test FAILED.Field decimals changed");
await assert.equal(await wizardStep2.getValueFieldTicker(), tickerText, "Test FAILED.Field ticker changed");
await assert.equal(await reservedTokensPage.amountAddedReservedTokens(), crowdsaleForUItests.reservedTokens.length-1, "Test FAILED. Wizard step#2: user is NOT able to add reserved tokens");
});
test.it('Step#2: Refresh - page keep state of each field',
async function () {
const result = await wizardStep2.refresh()
&& await wizardStep2.waitUntilLoaderGone()
&& await wizardStep2.waitUntilDisplayedFieldName()
&& await wizardStep2.waitUntilHasValueFieldName();
await assert.equal(result, true, "Test FAILED. Wizard step#2: page isn\'t loaded");
await assert.equal(await wizardStep2.getValueFieldName(), nameText, "Test FAILED.Field name changed");
await assert.equal(await wizardStep2.getValueFieldDecimals(), decimalsText, "Test FAILED.Field decimals changed");
await assert.equal(await wizardStep2.getValueFieldTicker(), tickerText, "Test FAILED.Field ticker changed");
await assert.equal(await reservedTokensPage.amountAddedReservedTokens(), crowdsaleForUItests.reservedTokens.length-1, "Test FAILED. Wizard step#2: user is NOT able to add reserved tokens");
});
test.it('Step#2: Change network - page keep state of each field',
async function () {
let result = await Investor1.setWalletAccount()
&& await wizardStep2.waitUntilLoaderGone()
&& await wizardStep2.waitUntilHasValueFieldName()
await assert.equal(result, true, "Test FAILED. Wizard step#2: page isn\'t loaded");
await assert.equal(await wizardStep2.getValueFieldName(), nameText, "Test FAILED.Field name changed");
await assert.equal(await wizardStep2.getValueFieldDecimals(), decimalsText, "Test FAILED.Field decimals changed");
await assert.equal(await wizardStep2.getValueFieldTicker(), tickerText, "Test FAILED.Field ticker changed");
await assert.equal(await reservedTokensPage.amountAddedReservedTokens(), crowdsaleForUItests.reservedTokens.length-1, "Test FAILED. Wizard step#2: user is NOT able to add reserved tokens");
result = await Owner.setWalletAccount()
&& await wizardStep2.waitUntilLoaderGone()
&& await wizardStep2.waitUntilHasValueFieldName()
await assert.equal(result, true, "Test FAILED. Wizard step#2: page isn\'t loaded");
await assert.equal(await wizardStep2.getValueFieldName(), nameText, "Test FAILED.Field name changed");
await assert.equal(await wizardStep2.getValueFieldDecimals(), decimalsText, "Test FAILED.Field decimals changed");
await assert.equal(await wizardStep2.getValueFieldTicker(), tickerText, "Test FAILED.Field ticker changed");
await assert.equal(await reservedTokensPage.amountAddedReservedTokens(), crowdsaleForUItests.reservedTokens.length-1, "Test FAILED. Wizard step#2: user is NOT able to add reserved tokens");
});
test.it('Wizard step#2: button Continue is displayed ',
async function () {
let result = await wizardStep2.isDisplayedButtonContinue();

View File

@ -22,6 +22,16 @@ const MetaMask = require('../pages/MetaMask.js').MetaMask;
const Nifty = require('../pages/Nifty.js').Nifty;
class Utils {
static async delay(ms) {
try {
await new Promise(resolve => setTimeout(resolve, ms))
return true
}
catch ( err ) {
logger.info(err);
return false;
}
}
static async getWalletInstance(driver) {
logger.info("Utils: getWallet");