refactor method contribute
This commit is contained in:
parent
53223fed1a
commit
b5eeb764a1
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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',
|
||||
|
|
401
utils/Utils.js
401
utils/Utils.js
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in New Issue