refactor method contribute

This commit is contained in:
dennis00010011b 2018-05-11 18:31:38 -07:00
parent 53223fed1a
commit b5eeb764a1
6 changed files with 287 additions and 295 deletions

View File

@ -16,7 +16,6 @@ const Page = require('../pages/Page.js').Page;
const testRA = require('../test/testRA.js');
const fs = require('fs');
class User {
constructor(driver, file) {
try {
@ -53,7 +52,7 @@ class User {
async setMetaMaskAccount() {
logger.info("Set Metamask account")
let metaMask = new MetaMask(this.driver);
if (this.accountOrderInMetamask === undefined ) {
if (this.accountOrderInMetamask === undefined) {
await metaMask.importAccount(this);
}
else {
@ -307,8 +306,6 @@ class User {
return true;
}
async confirmPopup() {
logger.info("confirm popup");
let investPage = new InvestPage(this.driver);
@ -328,45 +325,16 @@ class User {
async contribute(amount) {
logger.info("contribute " + amount);
const investPage = new InvestPage(this.driver);
await investPage.waitUntilLoaderGone();
await investPage.fillInvest(amount);
await investPage.clickButtonContribute();
let counter = 0;
let isContinue = true;
let timeLimit = 2;
do {
await this.driver.sleep(500);
if (await investPage.isPresentWarning()) {
await logger.info(this.name + ": warning:" + await investPage.getWarningText());
return false;
}
if (await investPage.isPresentError()) {
await logger.info(this.name + ": error:" + await investPage.getErrorText());
return false;
}
counter++;
if (counter >= timeLimit) {
isContinue = false;
}
} while (isContinue);
let result = await new MetaMask(this.driver).signTransaction(5);
if (!result) {
return false;
}
await investPage.waitUntilLoaderGone();
counter = 0;
timeLimit = 5;
while (counter++ < timeLimit) {
await this.driver.sleep(500);
if (await investPage.isPresentWarning()) {
await investPage.clickButtonOK();
await investPage.waitUntilLoaderGone();
await this.driver.sleep(2000);
return true;
}
}
return false;
return await investPage.waitUntilLoaderGone()
&& await investPage.fillInvest(amount)
&& await investPage.clickButtonContribute()
&& !await investPage.waitUntilShowUpErrorNotice(10)//3 sec
&& !await investPage.waitUntilShowUpWarning(10)//3 sec
&& await new MetaMask(this.driver).signTransaction(5)
&& await investPage.waitUntilLoaderGone()
&& await investPage.waitUntilShowUpWarning(10)//3 sec
&& await investPage.clickButtonOK()
&& await investPage.waitUntilLoaderGone();
}
async getBalanceFromInvestPage(crowdsale) {
@ -385,7 +353,6 @@ class User {
return result;
}
async createMintedCappedCrowdsale(crowdsale) {
logger.info(" createMintedCappedCrowdsale ");
@ -400,7 +367,7 @@ class User {
const reservedTokens = new ReservedTokensPage(this.driver);
let result = await welcomePage.open() &&
await welcomePage.clickButtonNewCrowdsale();
await welcomePage.clickButtonNewCrowdsale();
let counter = 200;
do {
@ -418,7 +385,6 @@ class User {
await reservedTokens.fillReservedTokens(crowdsale) &&
await wizardStep2.clickButtonContinue() &&
await wizardStep3.fillPage(crowdsale);
await this.driver.sleep(15000);
counter = 200;
do {
@ -435,10 +401,10 @@ class User {
} while (counter-- >= 0);
result = result &&
await wizardStep4.deployContracts(crowdsale) &&
await wizardStep4.waitUntilDisplayedButtonContinue() &&
await wizardStep4.clickButtonContinue() &&
await wizardStep4.waitUntilLoaderGone();
await wizardStep4.deployContracts(crowdsale) &&
await wizardStep4.waitUntilDisplayedButtonContinue() &&
await wizardStep4.clickButtonContinue() &&
await wizardStep4.waitUntilLoaderGone();
counter = 200;
do {
@ -539,8 +505,6 @@ class User {
return result && crowdsale.executionID !== "";
}
}
module.exports.User = User;

View File

@ -10,6 +10,8 @@ const warningText = By.id("swal2-content");
const errorNotice = By.className("css-6bx4c3");
const countdownTimer = By.className("timer");
const countdownTimerValue = By.className("timer-count");
const countdownTimerStatus = By.className("timer-interval");
const statusTimer = {start : "START", end : "END", finalized : "HAS BEEN"}
class InvestPage extends Page {
@ -22,12 +24,32 @@ class InvestPage extends Page {
this.timer = [];
}
async initTimer() {
async getTimerStatus() {
logger.info(this.name + "getTimerStatus ");
try {
let array = await this.initTimerFields();
let result = await super.getTextForElement(array[2]);
if (result.includes(statusTimer.start)) return statusTimer.start;
else if (result.includes(statusTimer.end)) return statusTimer.end;
else if (result.includes(statusTimer.finalized)) return statusTimer.finalized;
}
catch (err) {
logger.info("Error " + err);
return false;
}
}
async isCrowdsaleStarted() {
logger.info(this.name + "isCrowdsaleStarted ");
return (await this.getTimerStatus() !== statusTimer.start);
}
async initTimerFields() {
logger.info(this.name + "initTimer ");
try {
let arr = await super.findWithWait(countdownTimer);
this.timer = arr[0];
return arr;
let array = await super.findWithWait(countdownTimerStatus);
this.timer = array[0];
return array;
}
catch (err) {
logger.info("Error " + err);
@ -98,12 +120,12 @@ class InvestPage extends Page {
async fillInvest(amount) {
logger.info(this.name + "field Contribute :");
await super.fillWithWait(fieldInvest, amount);
return await super.fillWithWait(fieldInvest, amount);
}
async clickButtonContribute() {
logger.info(this.name + "button Contribute :");
await super.clickWithWait(buttonContribute);
return await super.clickWithWait(buttonContribute);
}
async getWarningText() {
@ -127,6 +149,16 @@ class InvestPage extends Page {
return (await this.initFields() !== null) &&
await super.getTextForElement(this.fieldCurrentAccount);
}
async waitUntilShowUpErrorNotice (Twaiting) {
logger.info(this.name + "waitUntilShowUpErrorNotice ");
return super.waitUntilDisplayed(errorNotice,Twaiting);
}
async waitUntilShowUpWarning (Twaiting) {
logger.info(this.name + "waitUntilShowUpWarning ");
return super.waitUntilDisplayed(buttonOk,Twaiting);
}
}
module.exports.InvestPage = InvestPage;

View File

@ -86,12 +86,14 @@ class TierPage extends Page {
async fillStartTime() {
logger.info(this.name + "fillStartTime ");
if (this.tier.startDate === "") return true;
//if (this.tier.startDate === "") return true;
let locator = await this.getFieldStartTime();
let format = await Utils.getDateFormat(this.driver);
if (this.tier.startDate === "") {
this.tier.startDate = Utils.getDateWithAdjust(80000, format);
this.tier.startTime = Utils.getTimeWithAdjust(80000, format);
}
else if (format === "mdy") {
this.tier.startDate = Utils.convertDateToMdy(this.tier.startDate);

View File

@ -50,7 +50,7 @@ testRA();
default: {Owner = new User (driver,user77_56B2File);break;}
}
await Utils.increaseBalance(Owner,20);
await Utils.receiveEth(Owner,20);
logger.info("Owner = "+Owner.account);
logger.info("Owner's balance = :"+await Utils.getBalance(Owner)/1e18);
let mtMask = new MetaMask(driver);

View File

@ -88,32 +88,37 @@ test.describe('POA token-wizard. Test suite #1', async function() {
/////////////////////////////////////////////////////////////////////////
test.before(async function() {
console.log(Date.now());
logger.info("Version 2.3.0 - truffle ");
startURL = await Utils.getStartURL();
driver = await Utils.startBrowserWithMetamask();
scenario1 = "./scenarios/simple.json";
const user8545_56B2File='./users/user8545_56B2.json';//Owner
const user8545_F16AFile='./users/user8545_F16A.json';//Investor1 - whitelisted before deployment
const user8545_f5aAFile='./users/user8545_f5aA.json';//Investor2 - added from manage page before start
const user8545_ecDFFile= './users/user8545_ecDF.json';//Reserved address, also wh investor that added after start time
scenario1 = "./scenarios/simple.json";
Owner = new User (driver,user8545_56B2File);
Investor1 = new User (driver,user8545_F16AFile);
Investor2 = new User (driver,user8545_f5aAFile);
ReservedAddress = new User (driver,user8545_ecDFFile);
await Utils.increaseBalance(Owner,20);
await Utils.increaseBalance(Investor1,20);
await Utils.increaseBalance(Investor2,20);
await Utils.increaseBalance(ReservedAddress,20);
await Utils.receiveEth(Owner,20);
await Utils.receiveEth(Investor1,20);
await Utils.receiveEth(Investor2,20);
await Utils.receiveEth(ReservedAddress,20);
logger.info("Balance: Owner "+ await Utils.getBalance(Owner)/1e18);
logger.info("Balance: Investor1 "+ await Utils.getBalance(Investor1)/1e18);
logger.info("Balance: Investor2 "+ await Utils.getBalance(Investor2)/1e18);
logger.info("Balance: ReservedAddress "+ await Utils.getBalance(ReservedAddress)/1e18);
crowdsale1=await Utils.getCrowdsaleInstance(scenario1);
metaMask = new MetaMask(driver);
await metaMask.activate();//return activated Metamask and empty page
await metaMask.activate();
welcomePage = new WizardWelcome(driver,startURL);
wizardStep1 = new WizardStep1(driver);
@ -136,8 +141,6 @@ test.describe('POA token-wizard. Test suite #1', async function() {
//await driver.quit();
});
/////// Tests
test.it.skip('Owner can create crowdsale: 1 tier, no reserved, no whitelist' ,
@ -190,16 +193,30 @@ await tierPage.setModify();
async function () {
let owner = Owner;//Owner
balance = 0;
console.log("weferwf"+ Owner.accountOrderInMetamask)
await owner.setMetaMaskAccount();
let Tfactor=1;
await owner.createMintedCappedCrowdsale(crowdsale1);
logger.info("Execution ID: " + crowdsale1.executionID);
logger.info("url: " + crowdsale1.url);
//return await assert.equal(true,false,"stop");
return await assert.notEqual(crowdsale1.executionID, "", 'Test FAILED. Crowdsale has not created ');
});
});
test.it('Countdown timer displayed' ,
async function () {
await investPage.waitUntilLoaderGone();
let result = await investPage.getTimerStatus();
return await assert.notEqual(result,false, 'Test FAILED. Countdown timer are not displayed ');
});
test.it('Tier start as scheduled' ,
async function () {
await investPage.waitUntilLoaderGone();
let counter =120;
do {
logger.info("wait "+ Date.now());
await driver.sleep(1000);
}
while( counter-->0 && !await investPage.isCrowdsaleStarted());
return await assert.equal(counter>0,true, 'Test FAILED. Tier has not start in time ');
});
test.it('Investor can buy half of total supply',
async function() {
@ -208,14 +225,18 @@ await tierPage.setModify();
await owner.setMetaMaskAccount();
let investor=Owner;
let url="https://5af093921f12b70ce2f90775--architect-coin-64174.netlify.com/invest?exec-id=0xe1d3b0f79047e2ec124d14c0714185b98167aacd991b084ffbf1857e6d787037&networkID=3";
crowdsale1.url=url;
await investor.openInvestPage(crowdsale1);
//crowdsale1.url = "http://localhost:3000/invest?exec-id=0x9a62b390a67ffc0e22038d188679467872e5f2638633f553d548e4d7285d0ff1&networkID=1526069545307";
await investor.openInvestPage(crowdsale1);
let contribution=crowdsale1.tiers[0].supply/2;
balance = balance + contribution;
await investor.contribute(contribution);
let r =await investor.contribute(contribution);
console.log("RRRRTTTTRR= "+ r);
let result = await investor.getBalanceFromInvestPage(crowdsale1);
return await assert.equal(true,false,"");
await driver.sleep(10000);
return await assert.equal(true,false,"");
return await assert.equal(result,balance,'Test FAILED. Investor can not buy amount = min');
});
test.it('Investor can not buy more than total supply',

View File

@ -1,28 +1,19 @@
var nodemailer = require('nodemailer');
const Logger= require('../entity/Logger.js');
const logger=Logger.logger;
const tempOutputPath=Logger.tempOutputPath;
const nodemailer = require('nodemailer');
const logger = require('../entity/Logger.js').logger;
const tempOutputPath = require('../entity/Logger.js').tempOutputPath;
const webdriver = require('selenium-webdriver'),
chrome = require('selenium-webdriver/chrome'),
firefox = require('selenium-webdriver/firefox'),
by = require('selenium-webdriver/lib/by');
chrome = require('selenium-webdriver/chrome');
const fs = require('fs');
const Web3 = require('web3');
const {spawn} = require('child_process');
const configFile='config.json';
const Crowdsale=require('../entity/Crowdsale.js').Crowdsale;
const Crowdsale = require('../entity/Crowdsale.js').Crowdsale;
const DutchAuction = require("../entity/DutchAuction.js").DutchAuction;
var browserHandles=[];
const configFile = 'config.json';
class Utils {
static async startBrowserWithMetamask() {
static async startBrowserWithMetamask() {
let source = './MetaMask.crx';
let options = new chrome.Options();
await options.addExtensions(source);
@ -32,95 +23,91 @@ class Utils {
return driver;
}
static runGanache(){
logger.info("Run ganache-cli");
return spawn ('ganache-cli');
static runGanache() {
logger.info("Run ganache-cli");
return spawn('ganache-cli');
}
static killProcess(process){
static killProcess(process) {
return process.kill();
}
static async getProviderUrl(id)
{
logger.info("getProvider "+id);
let provider="";
switch(id) {
case 8545:{ provider= "http://localhost:8545";break;}
default: {provider= "https://sokol.poa.network";break;}
static async getProviderUrl(id) {
logger.info("getProvider " + id);
let provider = "";
switch (id) {
case 8545: {
provider = "http://localhost:8545";
break;
}
default: {
provider = "https://sokol.poa.network";
break;
}
}
logger.info("Got provider "+provider);
return provider;
}
}
static async increaseBalance(user, amount)
{
try{
let provider=await Utils.getProviderUrl(user.networkID);
logger.info("Current provider "+ provider);
let w=await new Web3(new Web3.providers.HttpProvider(provider));
//let account0 = w.eth.accounts[0];
let account0=await w.eth.getAccounts().then((accounts)=>{return accounts[0];});
//let account0=await w.eth.accounts[2];
//logger.info("Ganache balance "+w.eth.getBalance(account0));
static async receiveEth(user, amount) {
try {
let provider = await Utils.getProviderUrl(user.networkID);
let w = await new Web3(new Web3.providers.HttpProvider(provider));
let account0 = await w.eth.getAccounts().then((accounts) => {
return accounts[0];
});
logger.info("Send " + amount + " Eth from " + account0 + " to " + user.account);
await w.eth.sendTransaction({
from: account0,
to: user.account,
value: amount*1e18
}).then(console.log);
value: amount * 1e18
}).then(console.log("Transaction done"));
return true;
}
catch(err){
logger.info("Not able to sent " + amount + " Eth to " + user.account);
logger.info(err);
catch (err) {
logger.info("Error" + err);
return false;
}
}
static setNetwork(network){
static setNetwork(network) {
let url;
switch(network)
{
case 3:{url="https://ropsten.infura.io";break;}
case 4:{url="https://rinkeby.infura.io/";break;}
case 77:{url="https://sokol.poa.network";break;}
case 8545:{url="http://localhost:8545"; break;}
default:{url="https://sokol.poa.network";break;}
switch (network) {
case 3: {
url = "https://ropsten.infura.io";
break;
}
case 4: {
url = "https://rinkeby.infura.io/";
break;
}
case 77: {
url = "https://sokol.poa.network";
break;
}
case 8545: {
url = "http://localhost:8545";
break;
}
default: {
url = "https://sokol.poa.network";
break;
}
}
return new Web3(new Web3.providers.HttpProvider(url));
return new Web3(new Web3.providers.HttpProvider(url));
}
static getTransactionCount(network,address) {
var w = Utils.setNetwork(network);
var n = w.eth.getTransactionCount(address.toString());//returns Number
return n;
static getTransactionCount(network, address) {
let web3 = Utils.setNetwork(network);
return web3.eth.getTransactionCount(address.toString());
}
static async getBalance(user)
{
var w = Utils.setNetwork(user.networkID);
var n =await w.eth.getBalance(user.account.toString());
return n;
}
static async getBalance(user) {
let web3 = Utils.setNetwork(user.networkID);
return await web3.eth.getBalance(user.account.toString());
}
static async wait(driver,time){
await driver.sleep(time*1000);
}
static sendEmail(path){
var transport = nodemailer.createTransport({
static sendEmail (path) {
let transport = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'testresults39@gmail.com',
@ -128,170 +115,157 @@ static async wait(driver,time){
}
});
var mailOptions = {
let mailOptions = {
from: 'testresults39@gmail.com',
to: 'dennistikhomirov@gmail.com',
subject: 'test results '+Utils.getDateWithAdjust(0,'utc')+" "+ Utils.getTimeWithAdjust(0,'utc'),
text: 'test results '+Utils.getDateWithAdjust(0,'utc') + " " + Utils.getTimeWithAdjust(0,'utc'),
subject: 'test results ' + Utils.getDateWithAdjust(0, 'utc') + " " + Utils.getTimeWithAdjust(0, 'utc'),
text: 'test results ' + Utils.getDateWithAdjust(0, 'utc') + " " + Utils.getTimeWithAdjust(0, 'utc'),
attachments: [
{path:""}
{path: ""}
]
};
mailOptions.attachments[0].path=path;
transport.sendMail(mailOptions, function(error, info){
mailOptions.attachments[0].path = path;
transport.sendMail(mailOptions, function (error, info) {
if (error) {
console.log(error);
return false;
} else {
console.log('Email sent: ' + info.response);
return true;
}
});
}
static compareDates(stringDate, newDate, newTime) {
let arr = stringDate.split("T");
let aww = arr[0].split("-");
let n = newDate.split("/");
return (arr[1] === newTime) && (aww[0] === n[2]) && (aww[1] === n[1]) && (aww[2] === n[0]);
}
static async getDateFormat(driver) {
let d = await driver.executeScript("var d=new Date(1999,11,28);return d.toLocaleDateString();");
d = ("" + d).substring(0, 2);
if (d == '28') logger.info("Date format=UTC");
else logger.info("Date format=MDY");
if (d == '28') return "utc";
else return "mdy";
}
static compare(ss,newDate,newTime){
let arr=ss.split("T");
let aww=arr[0].split("-");
let n=newDate.split("/");
return (arr[1]==newTime)&&(aww[0]==n[2])&&(aww[1]==n[1])&&(aww[2]==n[0]);
static convertDateToMdy(date) {
let s = date.split("/");
return "" + s[1] + "/" + s[0] + "/" + s[2];
}
static convertTimeToMdy(date) {
let s = date.split(":");
let r = "am";
s[1] = s[1].substring(0, 2);
static async getDateFormat(driver){
var d=await driver.executeScript("var d=new Date(1999,11,28);return d.toLocaleDateString();");
d=(""+d).substring(0,2);
if (d=='28') logger.info( "Date format=UTC");
else logger.info( "Date format=MDY");
if (d=='28') return "utc";
else return "mdy";
}
static convertDateToMdy(date){
let s=date.split("/");
return ""+s[1]+"/"+s[0]+"/"+s[2];
}
static convertTimeToMdy(date){
let s=date.split(":");
let r="am";
s[1]=s[1].substring(0,2);
if (s[0]>12) {s[0]=parseInt(s[0])-12; r="pm";}
else if ((s[0])=="12") r="pm";
else if(parseInt(s[0])==0) {s[0]="12";r="am";}
return ""+s[0]+":"+s[1]+r;
}
static convertDateToUtc(date){
let s=date.split("/");
return ""+s[1]+"/"+s[0]+"/"+s[2];
}
static convertTimeToUtc(date){
let s=date.split(":");
let r=s[1].charAt(2);
if (r=='p') {
s[0] = parseInt(s[0]) + 12;
if (s[0] > 23) s[0]=12;
if (s[0] > 12) {
s[0] = parseInt(s[0]) - 12;
r = "pm";
}
else if (s[0]=="12") s[0]="00";
return s[0]+":"+s[1].substring(0,2);
else if ((s[0]) == "12") r = "pm";
else if (parseInt(s[0]) == 0) {
s[0] = "12";
r = "am";
}
return "" + s[0] + ":" + s[1] + r;
}
}
static convertDateToUtc(date) {
let s = date.split("/");
return "" + s[1] + "/" + s[0] + "/" + s[2];
}
static convertTimeToUtc(date) {
let s = date.split(":");
let r = s[1].charAt(2);
if (r == 'p') {
s[0] = parseInt(s[0]) + 12;
if (s[0] > 23) s[0] = 12;
}
else if (s[0] == "12") s[0] = "00";
return s[0] + ":" + s[1].substring(0, 2);
static getTimeWithAdjust(adj, format){
}
var d=new Date(Date.now()+adj);
var r="am";
var h=d.getHours();
var min=d.getMinutes();
if (format=='mdy')
if (h>12) {h=h-12;r="pm";}
if (h==12) {r="pm";}
static getTimeWithAdjust(adj, format) {
if (format=='utc') r="";
var d = new Date(Date.now() + adj);
var r = "am";
var h = d.getHours();
var min = d.getMinutes();
if (format == 'mdy')
if (h > 12) {
h = h - 12;
r = "pm";
}
if (h == 12) {
r = "pm";
}
h=""+h;
if (h.length<2) h="0"+h;
var min=""+min;
if (min.length<2) min="0"+min;
if (format == 'utc') r = "";
h = "" + h;
if (h.length < 2) h = "0" + h;
var min = "" + min;
if (min.length < 2) min = "0" + min;
var q = h + ":" + min + r;
return q;
}
var q=h+":"+min+r;
return q;
}
static getDateWithAdjust(adj, format){
var d=new Date(Date.now()+adj);
var q;
static getDateWithAdjust(adj, format) {
var d = new Date(Date.now() + adj);
var q;
var day = "" + d.getDate();
if (day.length < 2) day = "0" + day;
var month = "" + (d.getMonth() + 1);
if (month.length < 2) month = "0" + month;
var day=""+d.getDate();
if (day.length<2) day="0"+day;
var month=""+(d.getMonth()+1);
if (month.length<2) month="0"+month;
if (format == 'mdy') q = month + "/" + day + "/" + d.getFullYear();
else if (format == 'utc') q = (day + "/" + month + "/" + d.getFullYear());
if (format=='mdy') q=month+"/"+day+"/"+d.getFullYear();
else if (format=='utc') q=(day+"/"+month+"/"+d.getFullYear());
return q;
}
return q;
}
static getOutputPath() {
var obj = JSON.parse(fs.readFileSync(configFile, "utf8"));
return obj.outputPath;
static getOutputPath() {
var obj = JSON.parse(fs.readFileSync(configFile, "utf8"));
return obj.outputPath;
}
}
static getDate() {
var d = new Date();
var date = "_" + (d.getMonth() + 1) + "_" + d.getDate() + "_"
+ d.getFullYear() + "_" + d.getHours() + "_" + d.getMinutes() + "_" + d.getSeconds();
return date;
}
static getDate() {
var d = new Date();
var date = "_" + (d.getMonth() + 1) + "_" + d.getDate() + "_"
+ d.getFullYear() + "_" + d.getHours() + "_" + d.getMinutes() + "_" + d.getSeconds();
return date;
}
static getStartURL() {
var obj = JSON.parse(fs.readFileSync(configFile, "utf8"));
return obj.startURL;
}
static getStartURL() {
var obj = JSON.parse(fs.readFileSync(configFile, "utf8"));
return obj.startURL;
static async takeScreenshoot(driver, name) {
}
var res = await driver.takeScreenshot();
var buf = new Buffer(res, 'base64');
console.log("Take screenshot. Path " + tempOutputPath + name + '.png');
await fs.writeFileSync(tempOutputPath + name + '.png', buf);
}
static async takeScreenshoot(driver,name) {
var res=await driver.takeScreenshot();
var buf = new Buffer(res, 'base64');
console.log("Take screenshot. Path "+tempOutputPath + name+'.png');
await fs.writeFileSync(tempOutputPath + name + '.png', buf);
}
static async zoom(driver,z){
await driver.executeScript ("document.body.style.zoom = '"+z+"'");
}
static async zoom(driver, z) {
await driver.executeScript("document.body.style.zoom = '" + z + "'");
}
static async getDutchAuctionCrowdsaleInstance(fileName) {
try {
@ -299,7 +273,7 @@ return q;
await crowdsale.parser(fileName);
return crowdsale;
}
catch(err) {
catch (err) {
logger.info("Can not create crowdsale");
logger.info(err);
return null;
@ -307,29 +281,28 @@ return q;
}
static async getCrowdsaleInstance(fileName) {
try {
let crowdsale = new Crowdsale();
await crowdsale.parser(fileName);
return crowdsale;
}
catch(err) {
catch (err) {
logger.info("Can not create crowdsale");
logger.info(err);
return null;
}
}
}
static async getPathToFileInPWD(fileName)
{
return process.env.PWD+"/" +fileName;
static async getPathToFileInPWD(fileName) {
return process.env.PWD + "/" + fileName;
}
}
module.exports={
Utils:Utils
module.exports = {
Utils: Utils
}
exports.browserHandles=browserHandles;