E2E files linting (#117)

* Introduced linting for oracle-e2e.

* Fixed linting errors.

* Introduced linting for ui-e2e

* Fixed linting errors.

* Typo.
This commit is contained in:
Przemyslaw Rzad 2019-07-02 15:12:57 +02:00 committed by GitHub
parent b254df7c25
commit 4c5df11fd3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 771 additions and 649 deletions

14
oracle-e2e/.eslintrc Normal file

@ -0,0 +1,14 @@
{
"extends": [
"plugin:node/recommended",
"airbnb-base",
"../.eslintrc"
],
"plugins": ["node"],
"rules": {
"node/no-unpublished-require": "off"
},
"env": {
"mocha": true
}
}

@ -4,7 +4,8 @@
"description": "",
"main": "index.js",
"scripts": {
"start": "mocha"
"start": "mocha",
"lint": "eslint . --ignore-path ../.eslintignore"
},
"author": "",
"license": "ISC",

@ -20,14 +20,8 @@ homeWeb3.eth.accounts.wallet.add(user.privateKey)
foreignWeb3.eth.accounts.wallet.add(user.privateKey)
const tokenAbi = require(path.join(abisDir, 'ERC677BridgeToken.json')).abi
const erc20Token = new foreignWeb3.eth.Contract(
tokenAbi,
ercToErcBridge.foreignToken
)
const erc677Token = new homeWeb3.eth.Contract(
tokenAbi,
ercToErcBridge.homeToken
)
const erc20Token = new foreignWeb3.eth.Contract(tokenAbi, ercToErcBridge.foreignToken)
const erc677Token = new homeWeb3.eth.Contract(tokenAbi, ercToErcBridge.homeToken)
describe('erc to erc', () => {
it('should convert tokens in foreign to tokens in home', async () => {

@ -20,10 +20,7 @@ homeWeb3.eth.accounts.wallet.add(user.privateKey)
foreignWeb3.eth.accounts.wallet.add(user.privateKey)
const tokenAbi = require(path.join(abisDir, 'ERC677BridgeToken.json')).abi
const erc20Token = new foreignWeb3.eth.Contract(
tokenAbi,
ercToNativeBridge.foreignToken
)
const erc20Token = new foreignWeb3.eth.Contract(tokenAbi, ercToNativeBridge.foreignToken)
describe('erc to native', () => {
it('should convert tokens in foreign to coins in home', async () => {

@ -2,7 +2,14 @@ const path = require('path')
const Web3 = require('web3')
const assert = require('assert')
const promiseRetry = require('promise-retry')
const { user, validator, nativeToErcBridge, secondUser, homeRPC, foreignRPC } = require('../../e2e-commons/constants.json')
const {
user,
validator,
nativeToErcBridge,
secondUser,
homeRPC,
foreignRPC
} = require('../../e2e-commons/constants.json')
const { abiPath } = require('../config.json')
const { generateNewBlock } = require('../../e2e-commons/utils')

@ -33,7 +33,7 @@
"scripts": {
"initialize": "yarn clean && git submodule update --init && yarn install --unsafe-perm --frozen-lockfile && yarn install:deploy && yarn compile:contracts",
"build": "yarn workspace ui run build",
"lint": "yarn wsrun --exclude oracle-e2e --exclude ui-e2e --exclude poa-parity-bridge-contracts lint",
"lint": "yarn wsrun --exclude poa-parity-bridge-contracts lint",
"test": "yarn wsrun --exclude monitor --exclude oracle-e2e --exclude ui-e2e test",
"ansible-lint": "./deployment/lint.sh",
"oracle-e2e": "./oracle-e2e/run-tests.sh",

14
ui-e2e/.eslintrc Normal file

@ -0,0 +1,14 @@
{
"extends": [
"plugin:node/recommended",
"airbnb-base",
"../.eslintrc"
],
"plugins": ["node"],
"rules": {
"node/no-unpublished-require": "off"
},
"env": {
"mocha": true
}
}

@ -1,152 +1,168 @@
const key = require('selenium-webdriver').Key;
const Page = require('./Page.js').Page;
const By = require('selenium-webdriver/lib/by').By;
/* eslint-disable no-return-await */
// eslint-disable-next-line import/no-extraneous-dependencies
const { Key } = require('selenium-webdriver')
// eslint-disable-next-line import/no-extraneous-dependencies
const { By } = require('selenium-webdriver/lib/by')
const { Page } = require('./Page.js')
const { homeRPC, foreignRPC } = require('../e2e-commons/constants.json')
const IDMetaMask = "nkbihfbeogaeaoehlefnkodbefgpgknn";
const URL = "chrome-extension://" + IDMetaMask + "//popup.html";
const buttonSubmit = By.className("confirm btn-green");
const buttonAccept = By.xpath('//*[@id="app-content"]/div/div[4]/div/button');
const agreement = By.xpath("//*[@id=\"app-content\"]/div/div[4]/div/div/div/p[1]/strong");
const fieldNewPass = By.xpath("//*[@id=\"password-box\"]");
const fieldConfirmPass = By.xpath("//*[@id=\"password-box-confirm\"]");
const buttonCreate = By.xpath("//*[@id=\"app-content\"]/div/div[4]/div/button");
const buttonIveCopied = By.xpath("//*[@id=\"app-content\"]/div/div[4]/div/button[1]");
const popupNetwork = By.className("network-name");
const popupAccount = By.xpath("//*[@id=\"app-content\"]/div/div[1]/div/div[2]/span/div");
const fieldPrivateKey = By.xpath("//*[@id=\"private-key-box\"]");
const pass = "qwerty12345";
const buttonImport = By.xpath("//*[@id=\"app-content\"]/div/div[4]/div/div[3]/button");
const fieldNewRPCURL = By.id("new_rpc");
const buttonSave = By.xpath("//*[@id=\"app-content\"]/div/div[4]/div/div[3]/div/div[2]/button");
const arrowBackRPCURL = By.xpath("//*[@id=\"app-content\"]/div/div[4]/div/div[1]/i");
const iconChangeAccount = By.className("cursor-pointer color-orange accounts-selector");
var accountOrderNumber = 1;
var networks = [0, 3, 43, 4, 8545];
const IDMetaMask = 'nkbihfbeogaeaoehlefnkodbefgpgknn'
const URL = 'chrome-extension://' + IDMetaMask + '//popup.html'
const buttonSubmit = By.className('confirm btn-green')
const buttonAccept = By.xpath('//*[@id="app-content"]/div/div[4]/div/button')
const agreement = By.xpath('//*[@id="app-content"]/div/div[4]/div/div/div/p[1]/strong')
const fieldNewPass = By.xpath('//*[@id="password-box"]')
const fieldConfirmPass = By.xpath('//*[@id="password-box-confirm"]')
const buttonCreate = By.xpath('//*[@id="app-content"]/div/div[4]/div/button')
const buttonIveCopied = By.xpath('//*[@id="app-content"]/div/div[4]/div/button[1]')
const popupNetwork = By.className('network-name')
const popupAccount = By.xpath('//*[@id="app-content"]/div/div[1]/div/div[2]/span/div')
const fieldPrivateKey = By.xpath('//*[@id="private-key-box"]')
const pass = 'qwerty12345'
const buttonImport = By.xpath('//*[@id="app-content"]/div/div[4]/div/div[3]/button')
const fieldNewRPCURL = By.id('new_rpc')
const buttonSave = By.xpath('//*[@id="app-content"]/div/div[4]/div/div[3]/div/div[2]/button')
const arrowBackRPCURL = By.xpath('//*[@id="app-content"]/div/div[4]/div/div[1]/i')
const iconChangeAccount = By.className('cursor-pointer color-orange accounts-selector')
let accountOrderNumber = 1
const networks = [0, 3, 43, 4, 8545]
class MetaMask extends Page {
constructor(driver) {
super(driver);
this.driver = driver;
this.URL = URL;
super(driver)
this.driver = driver
this.URL = URL
}
async clickButtonSubmitTransaction() {
return await this.clickWithWait(buttonSubmit);
return this.clickWithWait(buttonSubmit)
}
async activate() {
return await this.switchToNextPage() &&
(await this.open(this.URL) === this.URL) &&
await this.clickWithWait(buttonAccept) &&
await this.clickWithWait(agreement) &&
await this.clickKey(key.TAB, 15) &&
await this.clickWithWait(buttonAccept) &&
await this.waitUntilLocated(fieldNewPass) &&
await this.clickWithWait(fieldNewPass) &&
await this.fillWithWait(fieldNewPass, pass) &&
await this.fillWithWait(fieldConfirmPass, pass) &&
await this.clickWithWait(buttonCreate) &&
await this.waitUntilDisplayed(buttonIveCopied) &&
await this.clickWithWait(buttonIveCopied) &&
await this.switchToNextPage();
return (
(await this.switchToNextPage()) &&
(await this.open(this.URL)) === this.URL &&
(await this.clickWithWait(buttonAccept)) &&
(await this.clickWithWait(agreement)) &&
(await this.clickKey(Key.TAB, 15)) &&
(await this.clickWithWait(buttonAccept)) &&
(await this.waitUntilLocated(fieldNewPass)) &&
(await this.clickWithWait(fieldNewPass)) &&
(await this.fillWithWait(fieldNewPass, pass)) &&
(await this.fillWithWait(fieldConfirmPass, pass)) &&
(await this.clickWithWait(buttonCreate)) &&
(await this.waitUntilDisplayed(buttonIveCopied)) &&
(await this.clickWithWait(buttonIveCopied)) &&
(await this.switchToNextPage())
)
}
async importAccount(user) {
user.accountOrderInMetamask = accountOrderNumber - 1;
return await this.switchToNextPage() &&
await this.setNetwork(user.networkID) &&
await this.clickImportAccount() &&
await this.fillWithWait(fieldPrivateKey, user.privateKey) &&
await this.waitUntilDisplayed(buttonImport) &&
await this.clickWithWait(buttonImport) &&
await this.switchToNextPage();
user.accountOrderInMetamask = accountOrderNumber - 1
return (
(await this.switchToNextPage()) &&
(await this.setNetwork(user.networkID)) &&
(await this.clickImportAccount()) &&
(await this.fillWithWait(fieldPrivateKey, user.privateKey)) &&
(await this.waitUntilDisplayed(buttonImport)) &&
(await this.clickWithWait(buttonImport)) &&
(await this.switchToNextPage())
)
}
async selectAccount(user) {
try {
await this.switchToNextPage();
await this.setNetwork(user.networkID);
await super.clickWithWait(popupAccount);
await this.driver.executeScript("document.getElementsByClassName('dropdown-menu-item')[" +
user.accountOrderInMetamask + "].click();");
await this.switchToNextPage();
return true;
}
catch (err) {
return false;
await this.switchToNextPage()
await this.setNetwork(user.networkID)
await super.clickWithWait(popupAccount)
await this.driver.executeScript(
"document.getElementsByClassName('dropdown-menu-item')[" +
user.accountOrderInMetamask +
'].click();'
)
await this.switchToNextPage()
return true
} catch (err) {
return false
}
}
async clickImportAccount() {
try {
await super.clickWithWait(popupAccount);
await this.driver.executeScript("document.getElementsByClassName('dropdown-menu-item')["
+ (accountOrderNumber + 1) + "].click();");
accountOrderNumber++;
return true;
}
catch (err) {
return false;
await super.clickWithWait(popupAccount)
await this.driver.executeScript(
"document.getElementsByClassName('dropdown-menu-item')[" +
(accountOrderNumber + 1) +
'].click();'
)
accountOrderNumber++
return true
} catch (err) {
return false
}
}
async signTransaction(refreshCount) {
await this.switchToNextPage();
let counter = 5;
if (refreshCount !== undefined) counter = refreshCount;
await this.switchToNextPage()
let counter = 5
if (refreshCount !== undefined) counter = refreshCount
do {
await this.refresh();
await super.waitUntilLocated(iconChangeAccount);
await this.refresh()
await super.waitUntilLocated(iconChangeAccount)
if (await this.isElementDisplayed(buttonSubmit)) {
return await this.clickButtonSubmitTransaction() &&
await this.switchToNextPage();
return (await this.clickButtonSubmitTransaction()) && (await this.switchToNextPage())
}
await this.driver.sleep(3000);
} while (counter-- >= 0);
await this.driver.sleep(3000)
} while (counter-- >= 0)
await this.switchToNextPage();
return false;
await this.switchToNextPage()
return false
}
async setNetwork(provider) {
try {
await super.clickWithWait(popupNetwork);
let orderNumber = networks.indexOf(provider);
let script = "document.getElementsByClassName('dropdown-menu-item')[" + orderNumber + "].click();"
if (orderNumber < 0) await this.addNetwork(provider);
else await this.driver.executeScript(script);
return true;
}
catch (err) {
return false;
await super.clickWithWait(popupNetwork)
const orderNumber = networks.indexOf(provider)
const script =
"document.getElementsByClassName('dropdown-menu-item')[" + orderNumber + '].click();'
if (orderNumber < 0) await this.addNetwork(provider)
else await this.driver.executeScript(script)
return true
} catch (err) {
return false
}
}
async addNetwork(provider) {
let url;
let url
switch (provider) {
case homeRPC.ID: {
url = "http://localhost:8541";
networks.push(177);
break;
url = 'http://localhost:8541'
networks.push(177)
break
}
case foreignRPC.ID: {
url = "http://localhost:8542";
networks.push(142);
break;
url = 'http://localhost:8542'
networks.push(142)
break
}
default: {
throw new Error(`Unexcpected provider ${provider}`)
}
}
const index = networks.length > 8 ? 8 : networks.length;
await this.driver.executeScript("document.getElementsByClassName('dropdown-menu-item')[" +
(index - 1) + "].click();");
return await super.fillWithWait(fieldNewRPCURL, url) &&
await super.clickWithWait(buttonSave) &&
await super.clickWithWait(arrowBackRPCURL);
const index = networks.length > 8 ? 8 : networks.length
await this.driver.executeScript(
"document.getElementsByClassName('dropdown-menu-item')[" + (index - 1) + '].click();'
)
return (
(await super.fillWithWait(fieldNewRPCURL, url)) &&
(await super.clickWithWait(buttonSave)) &&
(await super.clickWithWait(arrowBackRPCURL))
)
}
}
module.exports = {
MetaMask: MetaMask
};
MetaMask
}

@ -1,166 +1,151 @@
const webdriver = require('selenium-webdriver');
const Twait = 20000;
/* eslint-disable no-return-await */
// eslint-disable-next-line import/no-extraneous-dependencies
const webdriver = require('selenium-webdriver')
const Twait = 20000
class Page {
constructor(driver) {
this.driver = driver;
this.driver = driver
}
async waitUntilDisplayed(element, Twaiting) {
let counter = Twaiting;
if (counter === undefined) counter = 180;
let counter = Twaiting
if (counter === undefined) counter = 180
try {
do {
await this.driver.sleep(300);
if (await this.isElementDisplayed(element)) return true;
} while (counter-- > 0);
return false;
}
catch (err) {
return false;
await this.driver.sleep(300)
if (await this.isElementDisplayed(element)) return true
} while (counter-- > 0)
return false
} catch (err) {
return false
}
}
async waitUntilDisappear(element, Twaiting) {
let counter = Twaiting;
if (counter === undefined) counter = 180;
let counter = Twaiting
if (counter === undefined) counter = 180
try {
do {
await this.driver.sleep(300);
if (!await this.isElementDisplayed(element)) return true;
} while (counter-- > 0);
return false;
}
catch (err) {
return false;
await this.driver.sleep(300)
if (!(await this.isElementDisplayed(element))) return true
} while (counter-- > 0)
return false
} catch (err) {
return false
}
}
async waitUntilLocated(element, Twaiting) {
let counter = Twaiting;
if (counter === undefined) counter = 180;
let counter = Twaiting
if (counter === undefined) counter = 180
try {
do {
await this.driver.sleep(300);
if (await this.isElementLocated(element)) return true;
} while (counter-- > 0);
return false;
}
catch (err) {
return false;
await this.driver.sleep(300)
if (await this.isElementLocated(element)) return true
} while (counter-- > 0)
return false
} catch (err) {
return false
}
}
async isElementDisplayed(element) {
try {
return await this.driver.findElement(element).isDisplayed();
}
catch (err) {
return false;
return await this.driver.findElement(element).isDisplayed()
} catch (err) {
return false
}
}
async isElementLocated(element) {
return (await this.driver.findElements(element)).length > 0;
return (await this.driver.findElements(element)).length > 0
}
async clickWithWait(element) {
try {
let field;
if (element.constructor.name !== "WebElement") {
field = await this.driver.wait(webdriver.until.elementLocated(element), Twait);
}
else field = element;
await field.click();
return true;
}
catch (err) {
return false;
let field
if (element.constructor.name !== 'WebElement') {
field = await this.driver.wait(webdriver.until.elementLocated(element), Twait)
} else field = element
await field.click()
return true
} catch (err) {
return false
}
}
async fillWithWait(element, text) {
try {
let field;
if (element.constructor.name !== "WebElement") {
field = await this.driver.wait(webdriver.until.elementLocated(element), Twait);
}
else field = element;
await field.sendKeys(text);
return true;
}
catch (err) {
return false;
let field
if (element.constructor.name !== 'WebElement') {
field = await this.driver.wait(webdriver.until.elementLocated(element), Twait)
} else field = element
await field.sendKeys(text)
return true
} catch (err) {
return false
}
}
async findWithWait(element) {
try {
await this.driver.wait(webdriver.until.elementLocated(element), Twait);
return await this.driver.findElements(element);
}
catch (err) {
return null;
await this.driver.wait(webdriver.until.elementLocated(element), Twait)
return await this.driver.findElements(element)
} catch (err) {
return null
}
}
async switchToNextPage() {
let allHandles = [];
let curHandle;
let allHandles = []
let curHandle
try {
allHandles = await this.driver.getAllWindowHandles();
curHandle = await this.driver.getWindowHandle();
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;
allHandles = [allHandles[0], allHandles[1]]
}
let handle;
let handle
for (let i = 0; i < allHandles.length; i++) {
if (curHandle !== allHandles[i]) {
handle = allHandles[i];
break;
handle = allHandles[i]
break
}
}
await this.driver.switchTo().window(handle);
await this.driver.sleep(500);
return true;
}
catch (err) {
return false;
await this.driver.switchTo().window(handle)
await this.driver.sleep(500)
return true
} catch (err) {
return false
}
}
async refresh() {
await this.driver.navigate().refresh();
await this.driver.navigate().refresh()
}
async getUrl() {
return await this.driver.getCurrentUrl();
return await this.driver.getCurrentUrl()
}
async open(url) {
await this.driver.get(url);
return this.getUrl();
await this.driver.get(url)
return this.getUrl()
}
async clickKey(key, times) {
try {
const action = this.driver.actions();
for (let i = 0; i < times; i++)
await action.sendKeys(key).perform();
return true;
}
catch (err) {
return false;
const action = this.driver.actions()
for (let i = 0; i < times; i++) await action.sendKeys(key).perform()
return true
} catch (err) {
return false
}
}
}
module.exports = {
Page: Page
};
Page
}

@ -1,51 +1,53 @@
const fs = require('fs-extra');
const MetaMask = require('./MetaMask.js').MetaMask;
const MainPage = require('./mainPage.js').MainPage;
/* eslint-disable no-return-await */
const { MetaMask } = require('./MetaMask.js')
const { MainPage } = require('./mainPage.js')
class User {
constructor(driver, obj) {
try {
this.driver = driver;
this.account = obj.account;
this.privateKey = obj.privateKey;
this.networkID = obj.networkID;
this.accountOrderInMetamask = "undefined";//for MetaMaskPage usage only
}
catch (err) {
console.log("instance User was not created");
console.log(err);
this.driver = driver
this.account = obj.account
this.privateKey = obj.privateKey
this.networkID = obj.networkID
this.accountOrderInMetamask = 'undefined' // for MetaMaskPage usage only
} catch (err) {
console.log('instance User was not created')
console.log(err)
}
}
async transferTokens(amount) {
let mainPage = new MainPage(this.driver);
let metaMask = new MetaMask(this.driver);
return await mainPage.fillFieldAmount(amount) &&
await mainPage.clickButtonTransfer() &&
await mainPage.waitUntilShowUpButtonTransferConfirm() &&
await mainPage.clickButtonTransferConfirm() &&
await metaMask.signTransaction() &&
await mainPage.waitUntilTransactionDone() &&
await mainPage.waitUntilShowUpButtonOk() &&
await mainPage.clickButtonOk()
const mainPage = new MainPage(this.driver)
const metaMask = new MetaMask(this.driver)
return (
(await mainPage.fillFieldAmount(amount)) &&
(await mainPage.clickButtonTransfer()) &&
(await mainPage.waitUntilShowUpButtonTransferConfirm()) &&
(await mainPage.clickButtonTransferConfirm()) &&
(await metaMask.signTransaction()) &&
(await mainPage.waitUntilTransactionDone()) &&
(await mainPage.waitUntilShowUpButtonOk()) &&
(await mainPage.clickButtonOk())
)
}
async setMetaMaskNetwork() {
let metaMask = new MetaMask(this.driver);
return await metaMask.switchToNextPage() &&
await metaMask.setNetwork(this.networkID) &&
await metaMask.switchToNextPage();
const metaMask = new MetaMask(this.driver)
return (
(await metaMask.switchToNextPage()) &&
(await metaMask.setNetwork(this.networkID)) &&
(await metaMask.switchToNextPage())
)
}
async setMetaMaskAccount() {
let metaMask = new MetaMask(this.driver);
if (this.accountOrderInMetamask === "undefined") {
return await metaMask.importAccount(this);
} else
return await metaMask.selectAccount(this);
const metaMask = new MetaMask(this.driver)
if (this.accountOrderInMetamask === 'undefined') {
return await metaMask.importAccount(this)
} else return await metaMask.selectAccount(this)
}
}
module.exports = {
User: User
};
User
}

@ -1,9 +1,17 @@
const webdriver = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');
const {user, nativeToErcBridge, ercToErcBridge, ercToNativeBridge, homeRPC, foreignRPC} = require('../e2e-commons/constants.json')
/* eslint-disable import/no-extraneous-dependencies */
/* eslint-disable no-return-await */
const webdriver = require('selenium-webdriver')
const chrome = require('selenium-webdriver/chrome')
const {
user,
nativeToErcBridge,
ercToErcBridge,
ercToNativeBridge,
homeRPC,
foreignRPC
} = require('../e2e-commons/constants.json')
class Utils {
static async getHomeAccount() {
return {
account: user.address,
@ -21,25 +29,25 @@ class Utils {
}
static async getStartURL() {
return nativeToErcBridge.ui;
return nativeToErcBridge.ui
}
static async getErc20StartURL() {
return ercToErcBridge.ui;
return ercToErcBridge.ui
}
static async getErc20NativeStartURL() {
return ercToNativeBridge.ui;
return ercToNativeBridge.ui
}
static async startBrowserWithMetamask() {
let source = './MetaMask.crx';
let options = new chrome.Options();
await options.addExtensions(source);
await options.addArguments('disable-popup-blocking');
let driver = await new webdriver.Builder().withCapabilities(options.toCapabilities()).build();
await driver.sleep(5000);
return driver;
const source = './MetaMask.crx'
const options = new chrome.Options()
await options.addExtensions(source)
await options.addArguments('disable-popup-blocking')
const driver = await new webdriver.Builder().withCapabilities(options.toCapabilities()).build()
await driver.sleep(5000)
return driver
}
}

@ -1,133 +1,125 @@
const Page = require('./Page.js').Page;
const By = require('selenium-webdriver/lib/by').By;
const fieldAmount = By.id("amount");
const buttonTransfer = By.className("bridge-form-button ");
const buttonOk = By.className("swal-button swal-button--confirm");
const fieldsBalance = By.className("network-balance");
const classWeb3Loaded = By.className("web3-loaded");
const classPendingTransaction = By.className("pending-transaction");
const loadingContainer = By.className("loading-container");
const buttonTransferConfirm = By.className("transfer-confirm");
const buttonDisclaimerConfirm = By.className("disclaimer-confirm");
const checkboxDisclaimer = By.className("disclaimer-checkbox");
const disclaimer = By.className("disclaimer-title");
/* eslint-disable no-return-await */
// eslint-disable-next-line import/no-extraneous-dependencies
const { By } = require('selenium-webdriver/lib/by')
const { Page } = require('./Page.js')
const fieldAmount = By.id('amount')
const buttonTransfer = By.className('bridge-form-button ')
const buttonOk = By.className('swal-button swal-button--confirm')
const fieldsBalance = By.className('network-balance')
const classWeb3Loaded = By.className('web3-loaded')
const classPendingTransaction = By.className('pending-transaction')
const loadingContainer = By.className('loading-container')
const buttonTransferConfirm = By.className('transfer-confirm')
const buttonDisclaimerConfirm = By.className('disclaimer-confirm')
const checkboxDisclaimer = By.className('disclaimer-checkbox')
const disclaimer = By.className('disclaimer-title')
class MainPage extends Page {
constructor(driver) {
super(driver);
this.url;
this.fieldHomePOABalance;
this.fieldForeignPOABalance;
}
async initFieldsBalance() {
if (!(await this.waitUntilWeb3Loaded())) return null;
if (!(await this.waitUntilWeb3Loaded())) return null
try {
let array;
array = await super.findWithWait(fieldsBalance);
this.fieldHomePOABalance = array[0];
this.fieldForeignPOABalance = array[1];
return array;
}
catch (err) {
return null;
const array = await super.findWithWait(fieldsBalance)
/* eslint-disable prefer-destructuring */
this.fieldHomePOABalance = array[0]
this.fieldForeignPOABalance = array[1]
/* eslint-enable prefer-destructuring */
return array
} catch (err) {
return null
}
}
async getHomePOABalance() {
await this.initFieldsBalance();
return parseFloat(await this.fieldHomePOABalance.getText());
await this.initFieldsBalance()
return parseFloat(await this.fieldHomePOABalance.getText())
}
async getForeignPOABalance() {
await this.initFieldsBalance();
return parseFloat(await this.fieldForeignPOABalance.getText());
await this.initFieldsBalance()
return parseFloat(await this.fieldForeignPOABalance.getText())
}
async fillFieldAmount(amount) {
try {
await this.clickWithWait(fieldAmount);
await this.fillWithWait(fieldAmount, amount);
return true;
}
catch (err) {
return false;
await this.clickWithWait(fieldAmount)
await this.fillWithWait(fieldAmount, amount)
return true
} catch (err) {
return false
}
}
async clickButtonTransfer() {
return await this.clickWithWait(buttonTransfer);
return this.clickWithWait(buttonTransfer)
}
async clickButtonOk() {
return await super.clickWithWait(buttonOk);
return super.clickWithWait(buttonOk)
}
async clickButtonTransferConfirm() {
return await super.clickWithWait(buttonTransferConfirm);
return super.clickWithWait(buttonTransferConfirm)
}
async isPresentButtonOk() {
return await super.isElementDisplayed(buttonOk, 180);
return super.isElementDisplayed(buttonOk, 180)
}
async waitUntilWeb3Loaded() {
return await this.waitUntilLocated(classWeb3Loaded, 180);
return this.waitUntilLocated(classWeb3Loaded, 180)
}
async isPendingTransaction() {
return await super.isElementLocated(classPendingTransaction);
return super.isElementLocated(classPendingTransaction)
}
async waitUntilTransactionDone() {
return await this.waitUntilDisappear(classPendingTransaction, 360);
return this.waitUntilDisappear(classPendingTransaction, 360)
}
async waitUntilShowUpButtonOk() {
return await super.waitUntilDisplayed(buttonOk, 360);
return super.waitUntilDisplayed(buttonOk, 360)
}
async waitUntilShowUpButtonTransferConfirm() {
return await super.waitUntilDisplayed(buttonTransferConfirm, 360);
}
async waitUntilShowUpButtonOk() {
return await super.waitUntilDisplayed(buttonOk, 360);
return super.waitUntilDisplayed(buttonTransferConfirm, 360)
}
async waitUntilShowUpLoadingContainer() {
return await super.waitUntilDisplayed(loadingContainer, 180);
return super.waitUntilDisplayed(loadingContainer, 180)
}
async isDisplayedLoadingContainer() {
return await super.isElementDisplayed(loadingContainer);
return super.isElementDisplayed(loadingContainer)
}
async confirmDisclaimer() {
return await super.waitUntilDisplayed(disclaimer, 180) &&
return (
(await super.waitUntilDisplayed(disclaimer, 180)) &&
// await this.clickCheckboxDisclaimer() &&
await this.clickButtonDisclaimerConfirm();
(await this.clickButtonDisclaimerConfirm())
)
}
async clickButtonDisclaimerConfirm() {
return await super.clickWithWait(buttonDisclaimerConfirm);
return super.clickWithWait(buttonDisclaimerConfirm)
}
async clickCheckboxDisclaimer() {
return await super.clickWithWait(checkboxDisclaimer);
return super.clickWithWait(checkboxDisclaimer)
}
async open(url) {
let counter = 60;
let counter = 60
do {
await this.driver.sleep(1000);
await super.open(url);
} while (counter-- >= 0 && !await this.isElementDisplayed(disclaimer))
return (counter >= 0);
await this.driver.sleep(1000)
await super.open(url)
} while (counter-- >= 0 && !(await this.isElementDisplayed(disclaimer)))
return counter >= 0
}
}
module.exports = {
MainPage: MainPage
};
MainPage
}

@ -6,5 +6,10 @@
"devDependencies": {
"selenium-webdriver": "3.6.0"
},
"scripts": {}
"scripts": {
"lint": "eslint . --ignore-path ../.eslintignore"
},
"engines": {
"node": ">= 8.9"
}
}

@ -1,310 +1,397 @@
let test = require('selenium-webdriver/testing');
let assert = require('assert');
const Utils = require('./Utils.js').Utils;
const MetaMask = require('./MetaMask.js').MetaMask;
const MainPage = require('./mainPage.js').MainPage;
const User = require("./User.js").User;
/* eslint-disable import/no-extraneous-dependencies */
/* eslint-disable no-return-await */
const test = require('selenium-webdriver/testing')
const assert = require('assert')
const { Utils } = require('./Utils.js')
const { MetaMask } = require('./MetaMask.js')
const { MainPage } = require('./mainPage.js')
const { User } = require('./User.js')
test.describe('e2e-test for bridge.poa, version 1.5.0', async function() {
this.timeout(5 * 60000);
this.slow(1 * 60000);
this.retries(2);
this.timeout(5 * 60000)
this.slow(1 * 60000)
this.retries(2)
const maxAmountPerTransactionLimit = 1;
let startURL;
let driver;
let mainPage;
let homeAccount;
let foreignAccount;
let metaMask;
let foreignBalanceBefore;
let homeBalanceBefore;
const maxAmountPerTransactionLimit = 1
let startURL
let driver
let mainPage
let homeAccount
let foreignAccount
let metaMask
let foreignBalanceBefore
let homeBalanceBefore
test.before(async function () {
test.before(async () => {
try {
driver = await Utils.startBrowserWithMetamask();
mainPage = new MainPage(driver);
homeAccount = new User(driver, await Utils.getHomeAccount());
foreignAccount = new User(driver, await Utils.getForeignAccount());
metaMask = new MetaMask(driver);
await metaMask.activate();
await homeAccount.setMetaMaskAccount();
driver = await Utils.startBrowserWithMetamask()
mainPage = new MainPage(driver)
homeAccount = new User(driver, await Utils.getHomeAccount())
foreignAccount = new User(driver, await Utils.getForeignAccount())
metaMask = new MetaMask(driver)
await metaMask.activate()
await homeAccount.setMetaMaskAccount()
} catch (e) {
console.log(e)
}
});
})
test.after(async function () {
test.after(async () => {
try {
await driver.quit();
await driver.quit()
} catch (e) {
console.log(e)
}
});
})
test.it('User is able to open main page of bridge-ui ',
async function () {
startURL = await Utils.getStartURL();
let result = await mainPage.open(startURL);
console.log("Test URL: " + startURL);
return await assert.equal(result, true, "Test FAILED. Build failed.");
});
test.it('User is able to open main page of bridge-ui ', async () => {
startURL = await Utils.getStartURL()
const result = await mainPage.open(startURL)
console.log('Test URL: ' + startURL)
return await assert.strictEqual(result, true, 'Test FAILED. Build failed.')
})
test.it('Home page: disclaimer is displayed ',
async function () {
let result = await mainPage.confirmDisclaimer();
return await assert.equal(result, true, "Test FAILED. Disclaimer is not displayed");
});
test.it('Home page: disclaimer is displayed ', async () => {
const result = await mainPage.confirmDisclaimer()
return await assert.strictEqual(result, true, 'Test FAILED. Disclaimer is not displayed')
})
test.it('Main page: foreign POA balance is displayed ',
async function () {
foreignBalanceBefore = await mainPage.getForeignPOABalance();
console.log("foreignBalanceBefore = "+foreignBalanceBefore);
let result = foreignBalanceBefore === 0;
return await assert.equal(result, true, "Test FAILED.Foreign POA balance is zero or not displayed ");
});
test.it('Main page: foreign POA balance is displayed ', async () => {
foreignBalanceBefore = await mainPage.getForeignPOABalance()
console.log('foreignBalanceBefore = ' + foreignBalanceBefore)
const result = foreignBalanceBefore === 0
return await assert.strictEqual(
result,
true,
'Test FAILED.Foreign POA balance is zero or not displayed '
)
})
test.it('Main page: home POA balance is displayed ',
async function () {
homeBalanceBefore = await mainPage.getHomePOABalance();
console.log("homeBalanceBefore = "+homeBalanceBefore);
let result = homeBalanceBefore !== 0;
return await assert.equal(result, true, "Test FAILED.Home POA balance is zero or not displayed ");
});
test.it('Main page: home POA balance is displayed ', async () => {
homeBalanceBefore = await mainPage.getHomePOABalance()
console.log('homeBalanceBefore = ' + homeBalanceBefore)
const result = homeBalanceBefore !== 0
return await assert.strictEqual(
result,
true,
'Test FAILED.Home POA balance is zero or not displayed '
)
})
test.it('User is able to send tokens from Home account to Foreign account ',
async function () {
let result = await homeAccount.transferTokens(maxAmountPerTransactionLimit);
return await assert.equal(result, true, "Test FAILED. User is able send tokens from Home account to Foreign account");
});
test.it('User is able to send tokens from Home account to Foreign account ', async () => {
const result = await homeAccount.transferTokens(maxAmountPerTransactionLimit)
return await assert.strictEqual(
result,
true,
'Test FAILED. User is able send tokens from Home account to Foreign account'
)
})
test.it('Home POA balance has correctly changed after transaction',
async function () {
let newHomeBalance = await mainPage.getHomePOABalance();
let shouldBe = homeBalanceBefore - maxAmountPerTransactionLimit;
console.log("newHomeBalance = " + newHomeBalance);
console.log("shouldBe = " + shouldBe);
let result = (Math.abs(shouldBe - newHomeBalance)) < (maxAmountPerTransactionLimit / 100);
homeBalanceBefore = newHomeBalance;
return await assert.equal(result, true, "Test FAILED.Home POA balance is not correct after transaction");
});
test.it('Home POA balance has correctly changed after transaction', async () => {
const newHomeBalance = await mainPage.getHomePOABalance()
const shouldBe = homeBalanceBefore - maxAmountPerTransactionLimit
console.log('newHomeBalance = ' + newHomeBalance)
console.log('shouldBe = ' + shouldBe)
const result = Math.abs(shouldBe - newHomeBalance) < maxAmountPerTransactionLimit / 100
homeBalanceBefore = newHomeBalance
return await assert.strictEqual(
result,
true,
'Test FAILED.Home POA balance is not correct after transaction'
)
})
test.it('Foreign account has received correct amount of tokens after transaction ',
async function () {
let newForeignBalance = await mainPage.getForeignPOABalance();
test.it('Foreign account has received correct amount of tokens after transaction ', async () => {
const newForeignBalance = await mainPage.getForeignPOABalance()
let shouldBe = foreignBalanceBefore + maxAmountPerTransactionLimit;
console.log("newForeignBalance = " + newForeignBalance);
console.log("shouldBe = " + shouldBe);
const shouldBe = foreignBalanceBefore + maxAmountPerTransactionLimit
console.log('newForeignBalance = ' + newForeignBalance)
console.log('shouldBe = ' + shouldBe)
let result = (Math.abs(shouldBe - newForeignBalance)) < (maxAmountPerTransactionLimit / 100);
return await assert.equal(result, true, "Test FAILED. Foreign POA balance is not correct after transaction");
});
const result = Math.abs(shouldBe - newForeignBalance) < maxAmountPerTransactionLimit / 100
return await assert.strictEqual(
result,
true,
'Test FAILED. Foreign POA balance is not correct after transaction'
)
})
test.it('User is able to send tokens from Foreign account to Home account ',
async function () {
await foreignAccount.setMetaMaskNetwork();
foreignBalanceBefore = await mainPage.getHomePOABalance();
let result = await foreignAccount.transferTokens(maxAmountPerTransactionLimit);
return await assert.equal(result, true, "Test FAILED. User is able send tokens from Home account to Foreign account");
});
test.it('User is able to send tokens from Foreign account to Home account ', async () => {
await foreignAccount.setMetaMaskNetwork()
foreignBalanceBefore = await mainPage.getHomePOABalance()
const result = await foreignAccount.transferTokens(maxAmountPerTransactionLimit)
return await assert.strictEqual(
result,
true,
'Test FAILED. User is able send tokens from Home account to Foreign account'
)
})
test.it('Foreign POA balance has correctly changed after transaction',
async function () {
let newForeignBalance = await mainPage.getHomePOABalance();
let shouldBe = foreignBalanceBefore - maxAmountPerTransactionLimit;
console.log("newForeignBalance = " + newForeignBalance);
console.log("shouldBe = " + shouldBe);
let result = (Math.abs(shouldBe - newForeignBalance)) < (maxAmountPerTransactionLimit / 100);
return await assert.equal(result, true, "Test FAILED.Foreign POA balance is not correct after transaction");
});
test.it('Foreign POA balance has correctly changed after transaction', async () => {
const newForeignBalance = await mainPage.getHomePOABalance()
const shouldBe = foreignBalanceBefore - maxAmountPerTransactionLimit
console.log('newForeignBalance = ' + newForeignBalance)
console.log('shouldBe = ' + shouldBe)
const result = Math.abs(shouldBe - newForeignBalance) < maxAmountPerTransactionLimit / 100
return await assert.strictEqual(
result,
true,
'Test FAILED.Foreign POA balance is not correct after transaction'
)
})
test.it('Home account has received correct amount of tokens after transaction ',
async function () {
let newHomeBalance = await mainPage.getForeignPOABalance();
let shouldBe = homeBalanceBefore + maxAmountPerTransactionLimit;
console.log("newHomeBalance = " + newHomeBalance);
console.log("shouldBe = " + shouldBe);
let result = (Math.abs(shouldBe - newHomeBalance)) < (maxAmountPerTransactionLimit / 100);
return await assert.equal(result, true, "Test FAILED.Home POA balance is not correct after transaction");
});
test.it('Home account has received correct amount of tokens after transaction ', async () => {
const newHomeBalance = await mainPage.getForeignPOABalance()
const shouldBe = homeBalanceBefore + maxAmountPerTransactionLimit
console.log('newHomeBalance = ' + newHomeBalance)
console.log('shouldBe = ' + shouldBe)
const result = Math.abs(shouldBe - newHomeBalance) < maxAmountPerTransactionLimit / 100
return await assert.strictEqual(
result,
true,
'Test FAILED.Home POA balance is not correct after transaction'
)
})
test.it('ERC20-ERC20 - User is able to open main page of bridge-ui ',
async function () {
startURL = await Utils.getErc20StartURL();
let result = await mainPage.open(startURL);
console.log("Test URL: " + startURL);
return await assert.equal(result, true, "Test FAILED. Build failed.");
});
test.it('ERC20-ERC20 - User is able to open main page of bridge-ui ', async () => {
startURL = await Utils.getErc20StartURL()
const result = await mainPage.open(startURL)
console.log('Test URL: ' + startURL)
return await assert.strictEqual(result, true, 'Test FAILED. Build failed.')
})
test.it('ERC20-ERC20 - Home page: disclaimer is displayed ',
async function () {
let result = await mainPage.confirmDisclaimer();
return await assert.equal(result, true, "Test FAILED. Disclaimer is not displayed");
});
test.it('ERC20-ERC20 - Home page: disclaimer is displayed ', async () => {
const result = await mainPage.confirmDisclaimer()
return await assert.strictEqual(result, true, 'Test FAILED. Disclaimer is not displayed')
})
test.it('ERC20-ERC20 - Main page: foreign erc20 balance is displayed ',
async function () {
foreignBalanceBefore = await mainPage.getForeignPOABalance();
console.log("foreignBalanceBefore = "+foreignBalanceBefore);
let result = foreignBalanceBefore === 0;
return await assert.equal(result, true, "Test FAILED. Foreign erc20 balance is not zero");
});
test.it('ERC20-ERC20 - Main page: foreign erc20 balance is displayed ', async () => {
foreignBalanceBefore = await mainPage.getForeignPOABalance()
console.log('foreignBalanceBefore = ' + foreignBalanceBefore)
const result = foreignBalanceBefore === 0
return await assert.strictEqual(result, true, 'Test FAILED. Foreign erc20 balance is not zero')
})
test.it('ERC20-ERC20 - Main page: home erc20 balance is displayed ',
async function () {
homeBalanceBefore = await mainPage.getHomePOABalance();
console.log("homeBalanceBefore = "+homeBalanceBefore);
let result = homeBalanceBefore !== 0;
return await assert.equal(result, true, "Test FAILED. Home erc20 balance is zero or not displayed ");
});
test.it('ERC20-ERC20 - Main page: home erc20 balance is displayed ', async () => {
homeBalanceBefore = await mainPage.getHomePOABalance()
console.log('homeBalanceBefore = ' + homeBalanceBefore)
const result = homeBalanceBefore !== 0
return await assert.strictEqual(
result,
true,
'Test FAILED. Home erc20 balance is zero or not displayed '
)
})
test.it('ERC20-ERC20 - User is able to send tokens from Foreign account to Home account ',
async function () {
homeBalanceBefore = await mainPage.getForeignPOABalance();
foreignBalanceBefore = await mainPage.getHomePOABalance();
let result = await foreignAccount.transferTokens(maxAmountPerTransactionLimit);
return await assert.equal(result, true, "Test FAILED. User is able send tokens from Foreign account to Home account");
});
test.it(
'ERC20-ERC20 - User is able to send tokens from Foreign account to Home account ',
async () => {
homeBalanceBefore = await mainPage.getForeignPOABalance()
foreignBalanceBefore = await mainPage.getHomePOABalance()
const result = await foreignAccount.transferTokens(maxAmountPerTransactionLimit)
return await assert.strictEqual(
result,
true,
'Test FAILED. User is able send tokens from Foreign account to Home account'
)
}
)
test.it('ERC20-ERC20 - Foreign POA balance has correctly changed after transaction',
async function () {
let newForeignBalance = await mainPage.getHomePOABalance();
let shouldBe = foreignBalanceBefore - maxAmountPerTransactionLimit;
console.log("newForeignBalance = " + newForeignBalance);
console.log("shouldBe = " + shouldBe);
let result = (Math.abs(shouldBe - newForeignBalance)) < (maxAmountPerTransactionLimit / 100);
return await assert.equal(result, true, "Test FAILED.Foreign POA balance is not correct after transaction");
});
test.it('ERC20-ERC20 - Foreign POA balance has correctly changed after transaction', async () => {
const newForeignBalance = await mainPage.getHomePOABalance()
const shouldBe = foreignBalanceBefore - maxAmountPerTransactionLimit
console.log('newForeignBalance = ' + newForeignBalance)
console.log('shouldBe = ' + shouldBe)
const result = Math.abs(shouldBe - newForeignBalance) < maxAmountPerTransactionLimit / 100
return await assert.strictEqual(
result,
true,
'Test FAILED.Foreign POA balance is not correct after transaction'
)
})
test.it('ERC20-ERC20 - Home account has received correct amount of tokens after transaction ',
async function () {
let newHomeBalance = await mainPage.getForeignPOABalance();
let shouldBe = homeBalanceBefore + maxAmountPerTransactionLimit;
console.log("newHomeBalance = " + newHomeBalance);
console.log("shouldBe = " + shouldBe);
let result = (Math.abs(shouldBe - newHomeBalance)) < (maxAmountPerTransactionLimit / 100);
return await assert.equal(result, true, "Test FAILED.Home POA balance is not correct after transaction");
});
test.it('ERC20-ERC20 - User is able to send tokens from Home account to Foreign account ',
async function () {
await homeAccount.setMetaMaskNetwork();
homeBalanceBefore = await mainPage.getHomePOABalance();
foreignBalanceBefore = await mainPage.getForeignPOABalance();
let result = await homeAccount.transferTokens(maxAmountPerTransactionLimit);
return await assert.equal(result, true, "Test FAILED. User is able send tokens from Home account to Foreign account");
});
test.it(
'ERC20-ERC20 - Home account has received correct amount of tokens after transaction ',
async () => {
const newHomeBalance = await mainPage.getForeignPOABalance()
const shouldBe = homeBalanceBefore + maxAmountPerTransactionLimit
console.log('newHomeBalance = ' + newHomeBalance)
console.log('shouldBe = ' + shouldBe)
const result = Math.abs(shouldBe - newHomeBalance) < maxAmountPerTransactionLimit / 100
return await assert.strictEqual(
result,
true,
'Test FAILED.Home POA balance is not correct after transaction'
)
}
)
test.it(
'ERC20-ERC20 - User is able to send tokens from Home account to Foreign account ',
async () => {
await homeAccount.setMetaMaskNetwork()
homeBalanceBefore = await mainPage.getHomePOABalance()
foreignBalanceBefore = await mainPage.getForeignPOABalance()
const result = await homeAccount.transferTokens(maxAmountPerTransactionLimit)
return await assert.strictEqual(
result,
true,
'Test FAILED. User is able send tokens from Home account to Foreign account'
)
}
)
test.it('ERC20-ERC20 - Home POA balance has correctly changed after transaction',
async function () {
let newHomeBalance = await mainPage.getHomePOABalance();
let shouldBe = homeBalanceBefore - maxAmountPerTransactionLimit;
console.log("newHomeBalance = " + newHomeBalance);
console.log("shouldBe = " + shouldBe);
let result = (Math.abs(shouldBe - newHomeBalance)) < (maxAmountPerTransactionLimit / 100);
homeBalanceBefore = newHomeBalance;
return await assert.equal(result, true, "Test FAILED.Home POA balance is not correct after transaction");
});
test.it('ERC20-ERC20 - Home POA balance has correctly changed after transaction', async () => {
const newHomeBalance = await mainPage.getHomePOABalance()
const shouldBe = homeBalanceBefore - maxAmountPerTransactionLimit
console.log('newHomeBalance = ' + newHomeBalance)
console.log('shouldBe = ' + shouldBe)
const result = Math.abs(shouldBe - newHomeBalance) < maxAmountPerTransactionLimit / 100
homeBalanceBefore = newHomeBalance
return await assert.strictEqual(
result,
true,
'Test FAILED.Home POA balance is not correct after transaction'
)
})
test.it('ERC20-ERC20 - Foreign account has received correct amount of tokens after transaction ',
async function () {
let newForeignBalance = await mainPage.getForeignPOABalance();
test.it(
'ERC20-ERC20 - Foreign account has received correct amount of tokens after transaction ',
async () => {
const newForeignBalance = await mainPage.getForeignPOABalance()
let shouldBe = foreignBalanceBefore + maxAmountPerTransactionLimit;
console.log("newForeignBalance = " + newForeignBalance);
console.log("shouldBe = " + shouldBe);
const shouldBe = foreignBalanceBefore + maxAmountPerTransactionLimit
console.log('newForeignBalance = ' + newForeignBalance)
console.log('shouldBe = ' + shouldBe)
let result = (Math.abs(shouldBe - newForeignBalance)) < (maxAmountPerTransactionLimit / 100);
return await assert.equal(result, true, "Test FAILED. Foreign POA balance is not correct after transaction");
});
const result = Math.abs(shouldBe - newForeignBalance) < maxAmountPerTransactionLimit / 100
return await assert.strictEqual(
result,
true,
'Test FAILED. Foreign POA balance is not correct after transaction'
)
}
)
test.it('ERC20-Native - User is able to open main page of bridge-ui ',
async function () {
startURL = await Utils.getErc20NativeStartURL();
let result = await mainPage.open(startURL);
console.log("Test URL: " + startURL);
return await assert.equal(result, true, "Test FAILED. Build failed.");
});
test.it('ERC20-Native - User is able to open main page of bridge-ui ', async () => {
startURL = await Utils.getErc20NativeStartURL()
const result = await mainPage.open(startURL)
console.log('Test URL: ' + startURL)
return await assert.strictEqual(result, true, 'Test FAILED. Build failed.')
})
test.it('ERC20-Native - Home page: disclaimer is displayed ',
async function () {
let result = await mainPage.confirmDisclaimer();
return await assert.equal(result, true, "Test FAILED. Disclaimer is not displayed");
});
test.it('ERC20-Native - Home page: disclaimer is displayed ', async () => {
const result = await mainPage.confirmDisclaimer()
return await assert.strictEqual(result, true, 'Test FAILED. Disclaimer is not displayed')
})
test.it('ERC20-Native - Main page: foreign erc20 balance is displayed ',
async function () {
await foreignAccount.setMetaMaskNetwork();
foreignBalanceBefore = await mainPage.getForeignPOABalance();
console.log("foreignBalanceBefore = "+foreignBalanceBefore);
let result = foreignBalanceBefore !== 0;
return await assert.equal(result, true, "Test FAILED. Foreign erc20 balance is zero");
});
test.it('ERC20-Native - Main page: foreign erc20 balance is displayed ', async () => {
await foreignAccount.setMetaMaskNetwork()
foreignBalanceBefore = await mainPage.getForeignPOABalance()
console.log('foreignBalanceBefore = ' + foreignBalanceBefore)
const result = foreignBalanceBefore !== 0
return await assert.strictEqual(result, true, 'Test FAILED. Foreign erc20 balance is zero')
})
test.it('ERC20-Native - Main page: home erc20 balance is displayed ',
async function () {
homeBalanceBefore = await mainPage.getHomePOABalance();
console.log("homeBalanceBefore = "+homeBalanceBefore);
let result = homeBalanceBefore !== 0;
return await assert.equal(result, true, "Test FAILED. Home erc20 balance is zero or not displayed ");
});
test.it('ERC20-Native - Main page: home erc20 balance is displayed ', async () => {
homeBalanceBefore = await mainPage.getHomePOABalance()
console.log('homeBalanceBefore = ' + homeBalanceBefore)
const result = homeBalanceBefore !== 0
return await assert.strictEqual(
result,
true,
'Test FAILED. Home erc20 balance is zero or not displayed '
)
})
test.it('ERC20-Native - User is able to send tokens from Foreign account to Home account ',
async function () {
homeBalanceBefore = await mainPage.getForeignPOABalance();
foreignBalanceBefore = await mainPage.getHomePOABalance();
let result = await foreignAccount.transferTokens(maxAmountPerTransactionLimit);
return await assert.equal(result, true, "Test FAILED. User is able send tokens from Foreign account to Home account");
});
test.it(
'ERC20-Native - User is able to send tokens from Foreign account to Home account ',
async () => {
homeBalanceBefore = await mainPage.getForeignPOABalance()
foreignBalanceBefore = await mainPage.getHomePOABalance()
const result = await foreignAccount.transferTokens(maxAmountPerTransactionLimit)
return await assert.strictEqual(
result,
true,
'Test FAILED. User is able send tokens from Foreign account to Home account'
)
}
)
test.it('ERC20-Native - Foreign POA balance has correctly changed after transaction',
async function () {
let newForeignBalance = await mainPage.getHomePOABalance();
let shouldBe = foreignBalanceBefore - maxAmountPerTransactionLimit;
console.log("newForeignBalance = " + newForeignBalance);
console.log("shouldBe = " + shouldBe);
let result = (Math.abs(shouldBe - newForeignBalance)) < (maxAmountPerTransactionLimit / 100);
return await assert.equal(result, true, "Test FAILED.Foreign POA balance is not correct after transaction");
});
test.it(
'ERC20-Native - Foreign POA balance has correctly changed after transaction',
async () => {
const newForeignBalance = await mainPage.getHomePOABalance()
const shouldBe = foreignBalanceBefore - maxAmountPerTransactionLimit
console.log('newForeignBalance = ' + newForeignBalance)
console.log('shouldBe = ' + shouldBe)
const result = Math.abs(shouldBe - newForeignBalance) < maxAmountPerTransactionLimit / 100
return await assert.strictEqual(
result,
true,
'Test FAILED.Foreign POA balance is not correct after transaction'
)
}
)
test.it('ERC20-Native - Home account has received correct amount of tokens after transaction ',
async function () {
let newHomeBalance = await mainPage.getForeignPOABalance();
let shouldBe = homeBalanceBefore + maxAmountPerTransactionLimit;
console.log("newHomeBalance = " + newHomeBalance);
console.log("shouldBe = " + shouldBe);
let result = (Math.abs(shouldBe - newHomeBalance)) < (maxAmountPerTransactionLimit / 100);
return await assert.equal(result, true, "Test FAILED.Home POA balance is not correct after transaction");
});
test.it('ERC20-Native - User is able to send tokens from Home account to Foreign account ',
async function () {
await homeAccount.setMetaMaskNetwork();
homeBalanceBefore = await mainPage.getHomePOABalance();
foreignBalanceBefore = await mainPage.getForeignPOABalance();
let result = await homeAccount.transferTokens(maxAmountPerTransactionLimit);
return await assert.equal(result, true, "Test FAILED. User is able send tokens from Home account to Foreign account");
});
test.it(
'ERC20-Native - Home account has received correct amount of tokens after transaction ',
async () => {
const newHomeBalance = await mainPage.getForeignPOABalance()
const shouldBe = homeBalanceBefore + maxAmountPerTransactionLimit
console.log('newHomeBalance = ' + newHomeBalance)
console.log('shouldBe = ' + shouldBe)
const result = Math.abs(shouldBe - newHomeBalance) < maxAmountPerTransactionLimit / 100
return await assert.strictEqual(
result,
true,
'Test FAILED.Home POA balance is not correct after transaction'
)
}
)
test.it(
'ERC20-Native - User is able to send tokens from Home account to Foreign account ',
async () => {
await homeAccount.setMetaMaskNetwork()
homeBalanceBefore = await mainPage.getHomePOABalance()
foreignBalanceBefore = await mainPage.getForeignPOABalance()
const result = await homeAccount.transferTokens(maxAmountPerTransactionLimit)
return await assert.strictEqual(
result,
true,
'Test FAILED. User is able send tokens from Home account to Foreign account'
)
}
)
test.it('ERC20-Native - Home POA balance has correctly changed after transaction',
async function () {
let newHomeBalance = await mainPage.getHomePOABalance();
let shouldBe = homeBalanceBefore - maxAmountPerTransactionLimit;
console.log("newHomeBalance = " + newHomeBalance);
console.log("shouldBe = " + shouldBe);
let result = (Math.abs(shouldBe - newHomeBalance)) < (maxAmountPerTransactionLimit / 100);
homeBalanceBefore = newHomeBalance;
return await assert.equal(result, true, "Test FAILED.Home POA balance is not correct after transaction");
});
test.it('ERC20-Native - Home POA balance has correctly changed after transaction', async () => {
const newHomeBalance = await mainPage.getHomePOABalance()
const shouldBe = homeBalanceBefore - maxAmountPerTransactionLimit
console.log('newHomeBalance = ' + newHomeBalance)
console.log('shouldBe = ' + shouldBe)
const result = Math.abs(shouldBe - newHomeBalance) < maxAmountPerTransactionLimit / 100
homeBalanceBefore = newHomeBalance
return await assert.strictEqual(
result,
true,
'Test FAILED.Home POA balance is not correct after transaction'
)
})
test.it('ERC20-Native - Foreign account has received correct amount of tokens after transaction ',
async function () {
let newForeignBalance = await mainPage.getForeignPOABalance();
test.it(
'ERC20-Native - Foreign account has received correct amount of tokens after transaction ',
async () => {
const newForeignBalance = await mainPage.getForeignPOABalance()
let shouldBe = foreignBalanceBefore + maxAmountPerTransactionLimit;
console.log("newForeignBalance = " + newForeignBalance);
console.log("shouldBe = " + shouldBe);
const shouldBe = foreignBalanceBefore + maxAmountPerTransactionLimit
console.log('newForeignBalance = ' + newForeignBalance)
console.log('shouldBe = ' + shouldBe)
let result = (Math.abs(shouldBe - newForeignBalance)) < (maxAmountPerTransactionLimit / 100);
return await assert.equal(result, true, "Test FAILED. Foreign POA balance is not correct after transaction");
});
});
const result = Math.abs(shouldBe - newForeignBalance) < maxAmountPerTransactionLimit / 100
return await assert.strictEqual(
result,
true,
'Test FAILED. Foreign POA balance is not correct after transaction'
)
}
)
})