diff --git a/testnet-faucet/package.json b/testnet-faucet/package.json index d63d9281d6..6386910a0c 100644 --- a/testnet-faucet/package.json +++ b/testnet-faucet/package.json @@ -8,10 +8,12 @@ "build": "yarn parcel build src/index.html" }, "dependencies": { - "@nymproject/nym-validator-client": "^0.18.0" + "@nymproject/nym-validator-client": "^0.18.0", + "puppeteer": "^11.0.0" }, "devDependencies": { "@parcel/transformer-sass": "^2.0.1", + "jest-puppeteer": "^6.0.0", "parcel": "^2.0.1" } } diff --git a/testnet-faucet/src/index.ts b/testnet-faucet/src/index.ts index 1fcdb3a7e9..977a680adb 100644 --- a/testnet-faucet/src/index.ts +++ b/testnet-faucet/src/index.ts @@ -120,7 +120,7 @@ import Validator from '@nymproject/nym-validator-client'; error?: any; }) => { if (success && balanceElem) { - balanceElem.innerHTML = `Successfuly transfered ${amount!} upunk to address ${accountAddress!}`; + balanceElem.innerHTML = `Successfully transfered ${amount!} upunk to address ${accountAddress!}`; } else if (!success && balanceElem) { balanceElem.innerHTML = `Transfer failed - ${error}`; } diff --git a/testnet-faucet/src/tests/config/environments.js b/testnet-faucet/src/tests/config/environments.js new file mode 100644 index 0000000000..52a0e0637d --- /dev/null +++ b/testnet-faucet/src/tests/config/environments.js @@ -0,0 +1,3 @@ +module.exports = { + localhost: "http://localhost:1234" +} \ No newline at end of file diff --git a/testnet-faucet/src/tests/config/test-data.json b/testnet-faucet/src/tests/config/test-data.json new file mode 100644 index 0000000000..bcc53b34ad --- /dev/null +++ b/testnet-faucet/src/tests/config/test-data.json @@ -0,0 +1 @@ +{ "sendaddress": "" } diff --git a/testnet-faucet/src/tests/faucet-test.js b/testnet-faucet/src/tests/faucet-test.js new file mode 100644 index 0000000000..72af5a4ca1 --- /dev/null +++ b/testnet-faucet/src/tests/faucet-test.js @@ -0,0 +1,35 @@ +const puppeteer = require('puppeteer'); +const data = require('./config/test-data.json'); +const faucet = require('./pageobjects/elements'); +const environments = require('./config/environments'); + +const WALLET_ADDRESS = data.sendaddress; + +const homepageTest = async () => { + const browser = await puppeteer.launch(); + const page = await browser.newPage(); + + await page.goto(environments.localhost); + + await page.waitForSelector(faucet.inputAddress); + await page.type(faucet.inputAddress, WALLET_ADDRESS); + await page.type(faucet.inputAmount, '5'); + await page.click(faucet.requestTokens); + + //wait the longest period of time for the transaction to finish + await page.waitForTimeout(8000); + + await page.waitForSelector('.balance:not(:empty)'); + + const element = await page.$(faucet.transaction); + const text = await page.evaluate((element) => element.textContent, element); + + //Successfuly transfered 5 upunk to address `punkaddress` + //input browser + console.log(text); + + await page.screenshot({ path: 'successful_transaction.png' }); + + await browser.close(); +}; +homepageTest(); diff --git a/testnet-faucet/src/tests/pageobjects/elements.js b/testnet-faucet/src/tests/pageobjects/elements.js new file mode 100644 index 0000000000..c10c99e5e2 --- /dev/null +++ b/testnet-faucet/src/tests/pageobjects/elements.js @@ -0,0 +1,6 @@ +module.exports = { + inputAddress: '#address-input', + requestTokens: '#request-tokens', + inputAmount: '#amount-input', + transaction: '.balance' +};