2019-01-21 09:59:21 -08:00
|
|
|
const assert = require('assert')
|
|
|
|
const { screens, menus, NETWORKS } = require('../elements')
|
|
|
|
|
|
|
|
const customRPC = async (f) => {
|
|
|
|
const invalidStringUrl = 'http://lwkdfowi**&#v er'
|
|
|
|
const urlWithoutHttp = 'infura.com'
|
|
|
|
const invalidEndpoint = 'http://abrakadabrawdjkwjeciwkasuhlvflwe.com'
|
2019-02-05 12:19:21 -08:00
|
|
|
const correctRpcUrl = 'https://core.poa.network/test'
|
2019-01-21 09:59:21 -08:00
|
|
|
|
|
|
|
it('switches to settings screen through menu \'Network -> Custom RPC\'', async function () {
|
|
|
|
await f.setProvider(NETWORKS.CUSTOM)
|
|
|
|
const settings = await f.waitUntilShowUp(screens.settings.title)
|
|
|
|
assert.equal(await settings.getText(), screens.settings.titleText, 'inappropriate screen is opened')
|
|
|
|
})
|
|
|
|
|
|
|
|
it('error message if new Rpc url is invalid', async function () {
|
|
|
|
const field = await f.waitUntilShowUp(screens.settings.fieldNewRPC)
|
|
|
|
await field.sendKeys(invalidStringUrl)
|
|
|
|
const button = await f.waitUntilShowUp(screens.settings.buttonSave)
|
|
|
|
assert.equal(await button.getText(), 'Save', 'button has incorrect name')
|
|
|
|
await f.click(button)
|
|
|
|
await f.delay(1000)
|
|
|
|
assert.equal(await f.waitUntilShowUp(screens.settings.buttons.delete, 5), false, 'invalid Rpc was added')
|
|
|
|
const errors = await f.driver.findElements(screens.settings.error)
|
|
|
|
assert.equal(errors.length, 1, 'error isn\'t displayed if Rpc url incorrect')
|
|
|
|
assert.equal(await errors[0].getText(), screens.settings.errors.invalidRpcUrl, 'error\'s text incorrect')
|
|
|
|
})
|
|
|
|
|
|
|
|
it('error message if new Rpc url has no HTTP/HTTPS prefix', async function () {
|
|
|
|
const fieldRpc = await f.driver.findElement(screens.settings.fieldNewRPC)
|
|
|
|
await f.clearField(fieldRpc)
|
|
|
|
await f.clearField(fieldRpc)
|
|
|
|
await fieldRpc.sendKeys(urlWithoutHttp)
|
|
|
|
const button = await f.waitUntilShowUp(screens.settings.buttonSave)
|
|
|
|
await f.click(button)
|
|
|
|
await f.delay(1000)
|
|
|
|
assert.equal(await f.waitUntilShowUp(screens.settings.buttons.delete, 5), false, 'invalid Rpc was added')
|
|
|
|
const errors = await f.driver.findElements(screens.settings.error)
|
|
|
|
assert.equal(errors.length, 1, 'error isn\'t displayed if Rpc url incorrect')
|
|
|
|
assert.equal(await errors[0].getText(), screens.settings.errors.invalidHTTP, 'error\'s text incorrect')
|
|
|
|
})
|
|
|
|
|
|
|
|
it('error message if Rpc doesn\'t exist', async function () {
|
|
|
|
const fieldRpc = await f.driver.findElement(screens.settings.fieldNewRPC)
|
|
|
|
await f.clearField(fieldRpc)
|
|
|
|
await f.clearField(fieldRpc)
|
|
|
|
await fieldRpc.sendKeys(invalidEndpoint)
|
|
|
|
const button = await f.waitUntilShowUp(screens.settings.buttonSave)
|
|
|
|
await f.click(button)
|
|
|
|
await f.delay(1000)
|
|
|
|
assert.equal(await f.waitUntilShowUp(screens.settings.buttons.delete, 5), false, 'invalid Rpc was added')
|
|
|
|
await f.waitUntilShowUp(screens.settings.error)
|
|
|
|
const errors = await f.driver.findElements(screens.settings.error)
|
|
|
|
assert.equal(errors.length, 1, 'error isn\'t displayed if Rpc url incorrect')
|
|
|
|
assert.equal(await errors[0].getText(), screens.settings.errors.invalidRpcEndpoint, 'error\'s text incorrect')
|
|
|
|
})
|
|
|
|
|
|
|
|
it('user can add valid custom rpc', async function () {
|
|
|
|
const fieldRpc = await f.driver.findElement(screens.settings.fieldNewRPC)
|
|
|
|
await f.clearField(fieldRpc)
|
|
|
|
await f.clearField(fieldRpc)
|
|
|
|
await f.clearField(fieldRpc)
|
|
|
|
await f.clearField(fieldRpc)
|
|
|
|
await fieldRpc.sendKeys(correctRpcUrl + 0)
|
|
|
|
await f.driver.findElement(screens.settings.buttonSave).click()
|
2019-01-28 13:13:00 -08:00
|
|
|
await f.delay(20000)
|
2019-01-21 09:59:21 -08:00
|
|
|
const customUrlElement = await f.waitUntilShowUp(screens.settings.currentNetwork)
|
|
|
|
assert.equal(await customUrlElement.getText(), correctRpcUrl + 0, 'Added Url doesn\'t match')
|
|
|
|
})
|
|
|
|
|
|
|
|
it('new added Rpc displayed in network dropdown menu', async function () {
|
|
|
|
let menu = await f.waitUntilShowUp(screens.main.network)
|
|
|
|
await menu.click()
|
|
|
|
const item = await f.waitUntilShowUp(menus.networks.addedCustomRpc)
|
|
|
|
assert.equal(await item.getText(), correctRpcUrl + 0, 'Added custom Url isn\'t displayed ')
|
|
|
|
menu = await f.waitUntilShowUp(screens.main.network)
|
|
|
|
await menu.click()
|
|
|
|
})
|
|
|
|
|
|
|
|
it('user can add four more valid custom rpc', async function () {
|
|
|
|
const fieldRpc = await f.waitUntilShowUp(screens.settings.fieldNewRPC)
|
|
|
|
const customUrlElement = await f.waitUntilShowUp(screens.settings.currentNetwork)
|
|
|
|
for (let i = 1; i < 5; i++) {
|
|
|
|
await f.clearField(fieldRpc)
|
|
|
|
await f.clearField(fieldRpc)
|
|
|
|
await f.clearField(fieldRpc)
|
|
|
|
await f.clearField(fieldRpc)
|
|
|
|
await fieldRpc.sendKeys(correctRpcUrl + i)
|
|
|
|
await f.driver.findElement(screens.settings.buttonSave).click()
|
|
|
|
await f.delay(5000)
|
|
|
|
assert.equal(await customUrlElement.getText(), correctRpcUrl + i, '#' + i + ': Current RPC field contains incorrect URL')
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
|
|
|
it('new added Rpc displayed in network dropdown menu', async function () {
|
|
|
|
let menu = await f.waitUntilShowUp(screens.main.network)
|
|
|
|
await menu.click()
|
|
|
|
await f.waitUntilShowUp(menus.networks.addedCustomRpc)
|
|
|
|
const items = await f.driver.findElements(menus.networks.addedCustomRpc)
|
|
|
|
assert.equal(items.length, 5, 'Incorrect number of added RPC')
|
|
|
|
|
|
|
|
menu = await f.waitUntilShowUp(screens.main.network)
|
|
|
|
await menu.click()
|
|
|
|
})
|
|
|
|
|
|
|
|
it('click button \'Delete\' opens screen \'Delete Custom RPC\'', async function () {
|
|
|
|
await f.delay(1000)
|
|
|
|
const button = await f.waitUntilShowUp(screens.settings.buttons.delete, 10)
|
|
|
|
assert.equal(await button.getText(), 'Delete', 'button has incorrect name')
|
|
|
|
await f.click(button)
|
|
|
|
const title = await f.waitUntilShowUp(screens.settings.title)
|
|
|
|
assert.equal(await title.getText(), screens.deleteCustomRPC.titleText, 'inappropriate screen is opened')
|
|
|
|
})
|
|
|
|
|
|
|
|
it('click button \'No\' opens screen \'Settings\'', async function () {
|
|
|
|
const button = await f.waitUntilShowUp(screens.deleteCustomRPC.buttons.no)
|
|
|
|
assert.equal(await button.getText(), 'No', 'button has incorrect name')
|
|
|
|
await f.click(button)
|
|
|
|
const title = await f.waitUntilShowUp(screens.settings.title)
|
|
|
|
assert.equal(await title.getText(), screens.settings.titleText, 'inappropriate screen is opened')
|
|
|
|
})
|
|
|
|
|
|
|
|
it('user able to delete custom rpc', async function () {
|
|
|
|
const buttonDelete = await f.waitUntilShowUp(screens.settings.buttons.delete, 25)
|
|
|
|
await f.click(buttonDelete)
|
|
|
|
const yesButton = await f.waitUntilShowUp(screens.deleteCustomRPC.buttons.yes)
|
|
|
|
assert.equal(await yesButton.getText(), 'Yes')
|
|
|
|
await f.click(yesButton)
|
|
|
|
const title = await f.waitUntilShowUp(screens.settings.title)
|
|
|
|
assert.equal(await title.getText(), screens.settings.titleText, 'inappropriate screen is opened')
|
|
|
|
})
|
|
|
|
|
|
|
|
it('deleted custom rpc isn\'t displayed in \'Settings\' screen', async function () {
|
|
|
|
const currentNetwork = await f.waitUntilShowUp(screens.settings.currentNetwork)
|
2019-06-06 06:00:52 -07:00
|
|
|
assert.equal(await currentNetwork.getText(), 'POA Core', 'custom Rpc is displayed after deletion')
|
2019-01-21 09:59:21 -08:00
|
|
|
})
|
|
|
|
|
|
|
|
it('deleted custom rpc isn\'t displayed in network dropdown menu', async function () {
|
|
|
|
await f.delay(2000)
|
|
|
|
let menu = await f.waitUntilShowUp(screens.main.network)
|
|
|
|
await menu.click()
|
|
|
|
await f.waitUntilShowUp(menus.networks.addedCustomRpc, 20)
|
|
|
|
const items = await f.driver.findElements(menus.networks.addedCustomRpc)
|
|
|
|
assert.equal(items.length, 4, 'deleted custom rpc is displayed in network dropdown menu')
|
|
|
|
menu = await f.waitUntilShowUp(screens.main.network)
|
|
|
|
await menu.click()
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = customRPC
|