Files
xverse-web-extension/tests/specs/transactionSTX.spec.ts
Duska.T fa68ddc13e ENG-5792/Fixed the restore wallet flow and list rune flow (#789)
* clean up for list runes test

* chore: remove npm test from playwright ci

* removed the commented lines

* chore: add overwrite true to Upload Playwright report step in playwright.yml

* fixed test from test suite 5

* fixed test Visual Check Runes Transaction history

* Update the comment in onboarding.ts

---------

Co-authored-by: fede erbes <fedeerbes@gmail.com>
2024-11-21 15:50:20 +01:00

144 lines
5.9 KiB
TypeScript

import { expect, test } from '../fixtures/base';
import Wallet from '../pages/wallet';
const STXMain = 'SPN2AMZQ54Y0NN4H5Z4S0DGMWP27CTXY5M1Q812S';
const STXTest = `STN2AMZQ54Y0NN4H5Z4S0DGMWP27CTXY5QEDCQAN`;
const amountSTXSend = 10;
test.describe('Transaction STX', () => {
test('Send STX Page Visual Check with insufficient funds Mainnet', async ({
page,
extensionId,
}) => {
const wallet = new Wallet(page);
await wallet.setupTest(extensionId, 'SEED_WORDS1', false);
// get own STX Address
const selfSTXMain = await wallet.getAddress('Stacks');
await wallet.checkVisualsStartpage();
// Click on send button
await wallet.buttonTransactionSend.click();
await expect(await wallet.divTokenRow.count()).toBeGreaterThanOrEqual(2);
// Send STX
await wallet.clickOnSpecificToken('Stacks');
await wallet.checkVisualsSendPage1('send-stx', true);
// Invalid Address check
await wallet.inputField.first().fill(`Test Address 123`);
await expect(wallet.buttonNext).toBeEnabled();
await wallet.buttonNext.click();
await expect(wallet.errorMessageAddressInvalid).toBeVisible();
await expect(wallet.buttonNext).toBeEnabled();
// Recipient address send self check
await wallet.inputField.first().fill(selfSTXMain);
await wallet.buttonNext.click();
await expect(wallet.errorMessageSendSelf).toBeVisible();
await expect(wallet.buttonNext).toBeEnabled();
// Fill in correct Receiver Address
await wallet.inputField.first().fill(STXMain);
await wallet.buttonNext.click();
// No funds on mainnet in this wallet -->Page opens and Next button is hidden and info message is shown
// Amount input is visible
await expect(page.getByRole('textbox', { name: '0' })).toBeVisible();
await expect(page.getByRole('textbox', { name: '0' })).toBeEnabled();
await expect(wallet.labelBalanceAmountSelector).toBeVisible();
await expect(wallet.imageToken).toBeVisible();
page.getByRole('textbox', { name: '0' }).fill('200000000');
await expect(page.getByRole('button', { name: /insufficient funds/i })).toBeVisible();
});
test('Send STX - Cancel transaction mainnet', async ({ page, extensionId }) => {
// Restore wallet and setup Mainnet network
const wallet = new Wallet(page);
await wallet.setupTest(extensionId, 'SEED_WORDS1', false);
await page.getByText('STX').click();
await page.getByRole('button', { name: /send/i }).click();
await page.getByRole('textbox', { name: /STX Address or .btc domain/i }).fill('zhfr.btc');
await expect(page.getByText(/associated address/i)).toBeVisible();
await expect(page.getByText(/SP2VCZJDTT5TJ7A3QPPJPTEF7A9CD8FRG2BEEJF3D/i)).toBeVisible();
await expect(page.getByRole('button', { name: /next/i })).toBeEnabled();
await page.getByRole('button', { name: /next/i }).click();
await page.getByRole('textbox', { name: /0/i }).last().fill('1');
// edit fee component set to custom
await page.getByRole('button', { name: /edit/i }).click();
await page.getByRole('button', { name: /custom/i }).click();
await page.getByRole('textbox', { name: /0/i }).last().fill('0.0974');
await page.getByRole('button', { name: /apply/i }).click();
await page.getByRole('button', { name: /next/i }).click();
// review transaction screen and clicking cancel btn
await expect(page.getByText(/review transaction/i)).toBeVisible();
await expect(page.getByText(/you will send/i)).toBeVisible();
await expect(page.getByText(/SP2VCZ...EEJF3D/i)).toBeVisible();
await expect(page.getByText(/Mainnet/i)).toBeVisible();
await expect(page.getByText(/0.0974 STX/i)).toBeVisible();
await expect(page.getByText(/1 STX/i)).toBeVisible();
await expect(page.getByRole('button', { name: /confirm/i })).toBeVisible();
await page.getByRole('button', { name: /cancel/i }).click();
// arriving to homepage
await page.url().includes('/options.html');
});
test('Send STX - confirm transaction testnet #localexecution', async ({ page, extensionId }) => {
// Restore wallet and setup Testnet network
const wallet = new Wallet(page);
await wallet.setupTest(extensionId, 'SEED_WORDS1', true);
// Save initial Balance for later Balance checks
const initialSTXBalance = await wallet.getTokenBalance('Stacks');
// Click on send button
await wallet.buttonTransactionSend.click();
// Needed to add this to avoid loading issues with the token list to be displayed
await expect(await wallet.divTokenRow.count()).toBeGreaterThanOrEqual(2);
await wallet.clickOnSpecificToken('Stacks');
// Check visuals of sending page
await wallet.checkVisualsSendPage1('send-stx', true);
// Fill in Receiver Address
await wallet.inputField.first().fill(STXTest);
await expect(wallet.buttonNext).toBeEnabled();
await wallet.buttonNext.click();
// Send Amount
await wallet.checkVisualsSendPage2('', true);
await wallet.inputField.first().fill(amountSTXSend.toString());
await expect(wallet.buttonNext).toBeEnabled();
// Balance check
const displayBalance = await wallet.labelBalanceAmountSelector.innerText();
const displayBalanceNumerical = parseFloat(displayBalance.replace(/[^0-9.]/g, ''));
await expect(initialSTXBalance).toEqual(displayBalanceNumerical);
// Save Fees to check on next Page
const fee = await wallet.feeAmount.innerText();
const sendFee = parseFloat(fee.replace(/[^0-9.]/g, ''));
await wallet.buttonNext.click();
// Transaction Review Page
await wallet.checkVisualsSendSTXPage3();
// Check correct amounts
await wallet.checkAmountsSendingSTX(amountSTXSend, STXTest, sendFee);
// Confirm the transaction
await wallet.confirmSendTransaction();
await wallet.checkVisualsStartpage();
// Can't check amounts or transaction as E2E test is faster than the UI or API to how that transaction --> has to be checked manually
});
});