diff --git a/.github/workflows/ui-test.yaml b/.github/workflows/ui-test.yaml index 1f3843e..e0529ea 100644 --- a/.github/workflows/ui-test.yaml +++ b/.github/workflows/ui-test.yaml @@ -46,4 +46,4 @@ jobs: - name: Run tests working-directory: ui-tests/tests run: |- - PM4ML_ENDPOINT="http://localhost:8081" SIM_CORE_CONNECTOR_ENDPOINT="http://localhost:3003" npm run test:headless + ENV="local" PM4ML_ENDPOINT="http://localhost:8081" SIM_CORE_CONNECTOR_ENDPOINT="http://localhost:3003" npm run test:headless diff --git a/on-premise-deploy/docker-compose/GitHubDesktop-linux-2.9.0-linux2.deb b/on-premise-deploy/docker-compose/GitHubDesktop-linux-2.9.0-linux2.deb new file mode 100644 index 0000000..df8f25c Binary files /dev/null and b/on-premise-deploy/docker-compose/GitHubDesktop-linux-2.9.0-linux2.deb differ diff --git a/ui-tests/tests/report.html b/ui-tests/tests/report.html deleted file mode 100644 index f10ad03..0000000 --- a/ui-tests/tests/report.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - - - - - - - - - -
- -

TestCafe Test Summary

- -
-

Summary


-

Start Time: Wed Nov 24 2021 19:06:30 GMT-0500 (Eastern Standard Time)

-

Browsers: Chrome 96.0.4664.45 / Linux 0.0

-

Duration: 12s

-

Tests Failed: 1 out of 1

-

Tests Skipped: 0

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#FixtureTest NameBrowsersDurationResult
1Find Transfers FeatureUser list populates users from wso2Chrome 96.0.4664.45 / Linux 0.012sfailed
-
-

Error Details

-

1. Find Transfers Feature - User list populates users from wso2

-
- Error in fixture.beforeEach hook -
-The specified selector does not match any element in the DOM tree.
-
- > | Selector([function])
-   |   .withProps({ label: 'Users' })
-
-Browser: Chrome 96.0.4664.45 / Linux 0.0 

-
- - -
- \ No newline at end of file diff --git a/ui-tests/tests/src/config.ts b/ui-tests/tests/src/config.ts index bb4f4ea..1183ba2 100644 --- a/ui-tests/tests/src/config.ts +++ b/ui-tests/tests/src/config.ts @@ -11,7 +11,7 @@ import * as dotenv from 'dotenv'; import * as assert from 'assert'; -dotenv.config(); +//dotenv.config(); function ensureEnv(e: string): string { const result = process.env[e]; @@ -19,10 +19,18 @@ function ensureEnv(e: string): string { return result as string; } +let tmpConfig; // TODO: ajv -export const config = { - pm4mlEndpoint: ensureEnv('PM4ML_ENDPOINT'), - simCoreConnectorEndpoint: ensureEnv('SIM_CORE_CONNECTOR_ENDPOINT'), +if (process.env.ENV === "local"){ + tmpConfig = { + //pm4mlEndpoint: ensureEnv('PM4ML_ENDPOINT'), + //simCoreConnectorEndpoint: ensureEnv('SIM_CORE_CONNECTOR_ENDPOINT'), + pm4mlEndpoint: "http://localhost:8081", + simCoreConnectorEndpoint: "http://localhost:3003", + senderpartyID:"22507008181" , + receiverpartyID:"22556999125", + simcurrency: "USD", + credentials: { test: { username: 'test', @@ -41,5 +49,39 @@ export const config = { password: 'test', }, }, - voodooTimeoutMs: 30000, + voodooTimeoutMs: 30000 }; + +}else if(process.env.ENV === "other"){ + tmpConfig = { + // pm4mlEndpoint: "https://portal.pm4mlsenderfsp.productdevk3s.dev.product.mbox-dev.io", + // simCoreConnectorEndpoint: "http://test.pm4mlsenderfsp.productdevk3s.dev.product.mbox-dev.io/cc-send", + pm4mlEndpoint: ensureEnv('PM4ML_ENDPOINT'), + simCoreConnectorEndpoint: ensureEnv('SIM_CORE_CONNECTOR_ENDPOINT'), + senderpartyID:"25644444444" , + receiverpartyID:"25633333333", + simcurrency: "USD", + credentials: { + test: { + username: 'test', + password: 'test', + }, + nofirstlastname: { + username: 'nofirstlastname', + password: 'test', + }, + nofirstname: { + username: 'nofirstname', + password: 'test', + }, + nolastname: { + username: 'nolastname', + password: 'test', + }, + }, + voodooTimeoutMs: 30000 + }; + +} +const config = Object.assign({}, tmpConfig); +export { config }; diff --git a/ui-tests/tests/src/page-objects/pages/LoginPage.ts b/ui-tests/tests/src/page-objects/pages/LoginPage.ts index b281188..d424715 100644 --- a/ui-tests/tests/src/page-objects/pages/LoginPage.ts +++ b/ui-tests/tests/src/page-objects/pages/LoginPage.ts @@ -1,7 +1,7 @@ import { Selector } from "testcafe"; export const LoginPage = { - usernameField: Selector('#username'), - passwordField: Selector('#password'), - loginButton: Selector('.pf-c-button'), + usernameField: Selector('#username', { timeout: 25000 }), + passwordField: Selector('#password', { timeout: 25000 }), + loginButton: Selector('.pf-c-button', { timeout: 25000 }), }; diff --git a/ui-tests/tests/src/page-objects/pages/TransferDashboardPage.ts b/ui-tests/tests/src/page-objects/pages/TransferDashboardPage.ts index 768a9c7..3e6f9eb 100644 --- a/ui-tests/tests/src/page-objects/pages/TransferDashboardPage.ts +++ b/ui-tests/tests/src/page-objects/pages/TransferDashboardPage.ts @@ -1,5 +1,6 @@ import { Selector } from "testcafe"; + export type Error = { id: string, direction: string, @@ -27,6 +28,7 @@ export type Transfer = { institution: string, date: string, senderIdType: string, + senderIdSubValue: string, senderIdValue: string, recipientIdType: string, recipientIdValue: string, @@ -60,7 +62,8 @@ export const TransferDashboardPage = { DateFilterLabel: Selector('div').withText('Date'), findATransferButton: Selector('.mb-input').withText('Find a Transfer'), - downloadErrorsButton: Selector('.transfers__errors__download__button'), + downloadErrorsButton: Selector('div.transfers__errors__section').nth(1).child('button').withAttribute('label','Download Errors'),// Selector('.transfers__errors__download__button'), + // viewAllErrorsButton: Selector('.transfers__errors__button'), //Find a Transfer Popup window Page Objects @@ -72,8 +75,8 @@ export const TransferDashboardPage = { .withText(`Find a Transfer`) .parent().parent('.el-modal__container'), - findATransferModalBasicFindTransferTab: Selector('.el-tabs__tab-item').withText('Basic Find a Transfer'), - findATransferModalAdvancedFiltering: Selector('.el-tabs__tab-item').withText('Advanced Filtering'), + findATransferModalBasicFindTransferTab: Selector('.el-tabs__tab-items').child(0),//.withText('Basic Find a Transfer'),XPathSelector('//input[@type="checkbox"]').nth(1); + findATransferModalAdvancedFiltering: Selector('.el-tabs__tab-items').child('div').withText('Advanced Filtering'), backtoFilteringSubmitButton: Selector('span.input-button__label').withText('Back to filtering'), ftPopupCloseButton: Selector('span.input-button__label').nth(3), findATransferModalTransferDownloadTransfersButton: Selector('.mb-input').withText('Download Transfers'), @@ -89,8 +92,8 @@ export const TransferDashboardPage = { findATransferModalAliasSubValueField: Selector('.find-transfer-modal__aliasSubValue input'), findATransferModalInstitutionField: Selector('.find-transfer-modal__institution input'), findATransferModalTransferStatusField: Selector('.find-transfer-modal__transfer-status input'), - findATransferModalSubmit: Selector('.el-modal__submit'), - findATransferModalCloseButton: Selector('.input-button__content').withText('Close'), + findATransferModalSubmit: Selector('button').withAttribute('label', 'Find Transfers'), //Selector('div.el-modal__footer-right').child(1),Selector('.el-modal__submit'), + findATransferModalCloseButton: Selector('.input-button__content').child('span').withText('Close'), //Find a Transfer results Page objects noresults: Selector('span').withText('No items'), @@ -279,9 +282,16 @@ export const TransferDashboardPage = { transferDetailsModalTechnicalDetailsDirection: Selector('#transfer-details-basic-modal__direction'), async getTransferRowById(innerText: string): Promise { - return Selector('.transfers__transfers__list .el-datalist__row').withText(innerText); + return Selector('.transfers__transfers__list .el-datalist__row').withText(innerText.substring(0, 22)); }, + async getFirstTransferRow(): Promise { + return Selector('.transfers__transfers__list .el-datalist__row').nth(0); + }, + + async getTransferByAmount(innerText: string): Promise { + return Selector('.transfers__transfers__list .el-datalist__item-cell').child("div").withText(innerText); + }, async getFindATransferRows(): Promise { const rows = Selector('.transfers__transfers__list .el-datalist__row'); const length = await rows.count; diff --git a/ui-tests/tests/src/tests/TransferDashboardPage.test.ts b/ui-tests/tests/src/tests/TransferDashboardPage.test.ts index c3358a4..7c018f7 100644 --- a/ui-tests/tests/src/tests/TransferDashboardPage.test.ts +++ b/ui-tests/tests/src/tests/TransferDashboardPage.test.ts @@ -6,18 +6,40 @@ import fs from 'fs'; import xlsx from 'xlsx'; const apiHelper = require('../helpers/api-helper'); const { v4: uuidv4 } = require('uuid'); +import { ClientFunction } from 'testcafe'; + + fixture`Transfer Dashboard Feature` .page`${config.pm4mlEndpoint}/transfer` + .beforeEach(async (t) => { // Login if not logged in + try{ + if (Selector('.login-pf-header')) { await t.typeText(LoginPage.usernameField, config.credentials.test.username) await t.typeText(LoginPage.passwordField, config.credentials.test.password) await t.click(LoginPage.loginButton) } + } + catch(e){ + // console.error(e); + var current_url = await t.eval(() => window.location.href); + await t.navigateTo(current_url); + await t.wait(6000); + await t.typeText(LoginPage.usernameField, config.credentials.test.username) + await t.typeText(LoginPage.passwordField, config.credentials.test.password) + await t.click(LoginPage.loginButton) + } + }); + const scroll = ClientFunction(function() { + window.scrollBy(0,1500); +}); + + test .meta({ ID: 'MP-T287', @@ -46,6 +68,7 @@ test ('Click Transfers, Find a Transfer, Advanced Filtering, Basic Transfer submit back to filter then close', async t => { await t + .maximizeWindow() .click(TransferDashboardPage.findATransferButton) .expect(TransferDashboardPage.ftTitle.exists).ok() .click(TransferDashboardPage.findATransferModalAdvancedFiltering) @@ -64,6 +87,7 @@ test }) ('Click_Transfers_Find_a_Transfer_with_invalid_transfer_id_no_item_expected', async t => { await t + .maximizeWindow() .click(TransferDashboardPage.findATransferButton) .click(TransferDashboardPage.findATransferModalBasicFindTransferTab) .typeText(TransferDashboardPage.transferIDTextBox, 'abc123', { replace: true }) @@ -83,7 +107,7 @@ test from: { displayName: 'PayerFirst PayerLast', idType: 'MSISDN', - idValue: 22507008181, + idValue: `${config.senderpartyID}`, extensionList: [ { @@ -95,10 +119,10 @@ test to: { displayName: 'PartyFirst PartyLast', idType: 'MSISDN', - idValue: '22556999125' + idValue: `${config.receiverpartyID}` }, amountType: 'SEND', - currency: 'USD', + currency: `${config.simcurrency}`, amount: 10.123, transactionType: 'TRANSFER', note: 'test payment - Success transfer initiated by Automation', @@ -106,6 +130,7 @@ test } var payloadHeaders = { 'Content-Type': 'application/json' }; var transferResponse = await apiHelper.getResponseBody('POST', `${config.simCoreConnectorEndpoint}/sendmoney`, JSON.stringify(transferRequest), payloadHeaders); + //console.log(transferResponse); let transfer_id = transferResponse.transferId; await apiHelper.getResponseBody('PUT', `${config.simCoreConnectorEndpoint}/sendmoney/${transfer_id}`, JSON.stringify({ acceptParty: true }), payloadHeaders); @@ -113,14 +138,16 @@ test await apiHelper.getResponseBody('PUT', `${config.simCoreConnectorEndpoint}/sendmoney/${transfer_id}`, JSON.stringify({ acceptQuote: true }), payloadHeaders); await t + .maximizeWindow() .click(TransferDashboardPage.findATransferButton) .click(TransferDashboardPage.findATransferModalBasicFindTransferTab) + .wait(20000) .typeText(TransferDashboardPage.transferIDTextBox, transfer_id, { replace: true }) .click(TransferDashboardPage.findATransferModalSubmit) .click(TransferDashboardPage.findATransferModalCloseButton) }); -test +test.timeouts({ pageLoadTimeout: 45000 }) .meta({ ID: 'MP-T292', STORY: 'MP-2512' @@ -130,7 +157,7 @@ test from: { displayName: 'PayerFirst PayerLast', idType: 'MSISDN', - idValue: 22507008181, + idValue: `${config.senderpartyID}`, extensionList: [ { @@ -142,10 +169,10 @@ test to: { displayName: 'PartyFirst PartyLast', idType: 'MSISDN', - idValue: '22556999125' + idValue: `${config.receiverpartyID}` }, amountType: 'SEND', - currency: 'USD', + currency: `${config.simcurrency}`, amount: 10.123, transactionType: 'TRANSFER', note: 'test payment - Success transfer initiated by Automation', @@ -157,10 +184,15 @@ test await apiHelper.getResponseBody('PUT', `${config.simCoreConnectorEndpoint}/sendmoney/${transferResponse.transferId}`, JSON.stringify({ acceptParty: true }), payloadHeaders); await apiHelper.getResponseBody('PUT', `${config.simCoreConnectorEndpoint}/sendmoney/${transferResponse.transferId}`, JSON.stringify({ acceptQuote: true }), payloadHeaders); + await t + .setTestSpeed(0.5) + .maximizeWindow() + .wait(10000) .click(TransferDashboardPage.findATransferButton) .click(TransferDashboardPage.findATransferModalBasicFindTransferTab) + .wait(18000) .typeText(TransferDashboardPage.transferIDTextBox, transferResponse.transferId, { paste: true, replace: false }).wait(10000) .click(TransferDashboardPage.findATransferModalSubmit) .click(TransferDashboardPage.transferIdList.withText(transferResponse.transferId)) @@ -203,7 +235,7 @@ test from: { displayName: 'PayerFirst PayerLast', idType: 'MSISDN', - idValue: 22507008181, + idValue: `${config.senderpartyID}`, extensionList: [ { @@ -215,10 +247,10 @@ test to: { displayName: 'PartyFirst PartyLast', idType: 'MSISDN', - idValue: '22556999125' + idValue: `${config.receiverpartyID}` }, amountType: 'SEND', - currency: 'USD', + currency: `${config.simcurrency}`, amount: 10.123, transactionType: 'TRANSFER', note: 'test payment - Success transfer initiated by Automation', @@ -226,12 +258,16 @@ test } var payloadHeaders = { 'Content-Type': 'application/json' }; var transferResponse = await apiHelper.getResponseBody('POST', `${config.simCoreConnectorEndpoint}/sendmoney`, JSON.stringify(transferRequest), payloadHeaders); + //console.log(transferResponse); await apiHelper.getResponseBody('PUT', `${config.simCoreConnectorEndpoint}/sendmoney/${transferResponse.transferId}`, JSON.stringify({ acceptParty: true }), payloadHeaders); transferResponse = await apiHelper.getResponseBody('PUT', `${config.simCoreConnectorEndpoint}/sendmoney/${transferResponse.transferId}`, JSON.stringify({ acceptQuote: true }), payloadHeaders); await t + .maximizeWindow() + .wait(5000) .click(TransferDashboardPage.findATransferButton) .click(TransferDashboardPage.findATransferModalBasicFindTransferTab) + .wait(20000) .typeText(TransferDashboardPage.transferIDTextBox, transferResponse.transferId, { paste: true, replace: false }).wait(10000) .click(TransferDashboardPage.findATransferModalSubmit) .click(TransferDashboardPage.transferIdList.withText(transferResponse.transferId)) @@ -266,7 +302,7 @@ test from: { displayName: 'PayerFirst PayerLast', idType: 'MSISDN', - idValue: 22507008181, + idValue: `${config.senderpartyID}`, extensionList: [ { @@ -278,10 +314,10 @@ test to: { displayName: 'PartyFirst PartyLast', idType: 'MSISDN', - idValue: '22556999125' + idValue: `${config.receiverpartyID}` }, amountType: 'SEND', - currency: 'USD', + currency: `${config.simcurrency}`, amount: 10.123, transactionType: 'TRANSFER', note: 'test payment - Success transfer initiated by Automation', @@ -293,8 +329,11 @@ test transferResponse = await apiHelper.getResponseBody('PUT', `${config.simCoreConnectorEndpoint}/sendmoney/${transferResponse.transferId}`, JSON.stringify({ acceptQuote: true }), payloadHeaders); await t + .maximizeWindow() + .wait(5000) .click(TransferDashboardPage.findATransferButton) .click(TransferDashboardPage.findATransferModalBasicFindTransferTab) + .wait(18000) .typeText(TransferDashboardPage.transferIDTextBox, transferResponse.transferId, { paste: true, replace: false }).wait(10000) .click(TransferDashboardPage.findATransferModalSubmit) .click(TransferDashboardPage.transferIdList.withText(transferResponse.transferId)) @@ -360,7 +399,7 @@ test from: { displayName: 'PayerFirst PayerLast', idType: 'MSISDN', - idValue: 22507008181, + idValue: `${config.senderpartyID}`, extensionList: [ { @@ -372,10 +411,10 @@ test to: { displayName: 'PartyFirst PartyLast', idType: 'MSISDN', - idValue: '22556999125' + idValue: `${config.receiverpartyID}` }, amountType: 'SEND', - currency: 'USD', + currency: `${config.simcurrency}`, amount: 10.123, transactionType: 'TRANSFER', note: 'test payment - Success transfer initiated by Automation', @@ -387,7 +426,10 @@ test transferResponse = await apiHelper.getResponseBody('PUT', `${config.simCoreConnectorEndpoint}/sendmoney/${transferResponse.transferId}`, JSON.stringify({ acceptQuote: true }), payloadHeaders); await t + .maximizeWindow() + .wait(5000) .click(TransferDashboardPage.findATransferButton) + .wait(15000) .click(TransferDashboardPage.findATransferModalBasicFindTransferTab) .typeText(TransferDashboardPage.transferIDTextBox, transferResponse.transferId, { paste: true, replace: false }).wait(10000) .click(TransferDashboardPage.findATransferModalSubmit) @@ -455,7 +497,7 @@ test from: { displayName: 'PayerFirst PayerLast', idType: 'MSISDN', - idValue: 22507008181, + idValue: `${config.senderpartyID}`, extensionList: [ { @@ -467,10 +509,10 @@ test to: { displayName: 'PartyFirst PartyLast', idType: 'MSISDN', - idValue: '22556999125' + idValue: `${config.receiverpartyID}` }, amountType: 'SEND', - currency: 'USD', + currency: `${config.simcurrency}`, amount: 10.123, transactionType: 'TRANSFER', note: 'test payment - Success transfer initiated by Automation', @@ -478,14 +520,19 @@ test } var payloadHeaders = { 'Content-Type': 'application/json' }; var transferResponse = await apiHelper.getResponseBody('POST', `${config.simCoreConnectorEndpoint}/sendmoney`, JSON.stringify(transferRequest), payloadHeaders); + //console.log(transferResponse); await apiHelper.getResponseBody('PUT', `${config.simCoreConnectorEndpoint}/sendmoney/${transferResponse.transferId}`, JSON.stringify({ acceptParty: true }), payloadHeaders); transferResponse = await apiHelper.getResponseBody('PUT', `${config.simCoreConnectorEndpoint}/sendmoney/${transferResponse.transferId}`, JSON.stringify({ acceptQuote: true }), payloadHeaders); await t + .maximizeWindow() + .wait(10000) .click(TransferDashboardPage.findATransferButton) .click(TransferDashboardPage.findATransferModalBasicFindTransferTab) + .wait(20000) .typeText(TransferDashboardPage.transferIDTextBox, transferResponse.transferId, { paste: true, replace: false }).wait(10000) .click(TransferDashboardPage.findATransferModalSubmit) + .wait(5000) .click(TransferDashboardPage.transferIdList.withText(transferResponse.transferId)) .click(TransferDashboardPage.transferDetailsModalTechnicalDetailsTab) .click(TransferDashboardPage.transferPrepareButton) @@ -515,7 +562,7 @@ test.meta({ }) ('Can download excel spreadsheet of transfers in basic search', async (t) => { const expectedFilePath = `${process.env.HOME}` + '/Downloads/' + `Payment_Manager_Transfers_${new Date().toDateString()}.xlsx`; - + await t.maximizeWindow() await t.click(TransferDashboardPage.findATransferButton); await t.click(TransferDashboardPage.findATransferModalSubmit); // Adding `.wait` just as a precaution since this downloads a file. @@ -531,12 +578,14 @@ test.meta({ const transferExists = await Promise.all(rows.map((r: TransferRow) => r.transferId.innerText)); await t.expect(transferExists).contains(transfers[0].id); - const expectedTransfer = transfers.find( t => t.id === '61797537-a05a-469f-b2f3-059a9cd5bd8d'); - await t.expect(expectedTransfer?.senderIdType).eql('MSISDN'); - await t.expect(expectedTransfer?.senderIdValue).eql('44123456789'); - await t.expect(expectedTransfer?.recipientIdType).eql('MSISDN'); - await t.expect(expectedTransfer?.recipientIdValue).eql('27713803912'); - await t.expect(expectedTransfer?.homeTransferId).eql('5105'); + const expectedTransfer = transfers.find( t => t.id[0]); + //console.log(expectedTransfer); + await t.expect(expectedTransfer?.senderIdType).ok(); + //await t.expect(expectedTransfer?.senderIdSubValue).ok(); + await t.expect(expectedTransfer?.senderIdValue).ok(); + await t.expect(expectedTransfer?.recipientIdType).ok(); + await t.expect(expectedTransfer?.recipientIdValue).ok(); + // Delete file fs.unlinkSync(expectedFilePath); @@ -549,7 +598,7 @@ test.meta({ description: '', })('Can download excel spreadsheet of transfers in advanced', async (t) => { const expectedFilePath = `${process.env.HOME}/Downloads/Payment_Manager_Transfers_${new Date().toDateString()}.xlsx`; - + await t.maximizeWindow() await t.click(TransferDashboardPage.findATransferButton); await t.click(TransferDashboardPage.findATransferModalAdvancedFiltering); await t.click(TransferDashboardPage.findATransferModalSubmit); @@ -567,30 +616,87 @@ test.meta({ const transferExists = await Promise.all(rows.map((r: TransferRow) => r.transferId.innerText)); await t.expect(transferExists).contains(transfers[0].id); - const expectedTransfer = transfers.find( t => t.id === '61797537-a05a-469f-b2f3-059a9cd5bd8d'); - await t.expect(expectedTransfer?.senderIdType).eql('MSISDN'); - await t.expect(expectedTransfer?.senderIdValue).eql('44123456789'); - await t.expect(expectedTransfer?.recipientIdType).eql('MSISDN'); - await t.expect(expectedTransfer?.recipientIdValue).eql('27713803912'); - await t.expect(expectedTransfer?.homeTransferId).eql('5105'); + const expectedTransfer = transfers.find( t => t.id[0]); + //console.log(expectedTransfer); + await t.expect(expectedTransfer?.senderIdType).ok(); + + await t.expect(expectedTransfer?.senderIdValue).ok(); + await t.expect(expectedTransfer?.recipientIdType).ok(); + await t.expect(expectedTransfer?.recipientIdValue).ok(); // Delete file fs.unlinkSync(expectedFilePath); }); -test.meta({ +test.timeouts({ pageLoadTimeout: 45000 }).meta({ ID: '', STORY: '', description: '', })('Can download excel spreadsheet of errors', async (t) => { const expectedFilePath = `${process.env.HOME}/Downloads/Payment_Manager_Errors_${new Date().toDateString()}.xlsx`; + var homeTransactionId = uuidv4(); + var transferRequest = { + from: { + displayName: 'PayerFirst PayerLast', + idType: 'MSISDN', + idValue: `${config.senderpartyID}`, + extensionList: + [ + { + key: 4, + value: 2 + } + ] + }, + to: { + displayName: 'PartyFirst PartyLast', + idType: 'MSISDN', + idValue: `${config.receiverpartyID}` + }, + amountType: 'SEND', + currency: `${config.simcurrency}`, + amount: 1234, + transactionType: 'TRANSFER', + note: 'test payment - Success transfer initiated by Automation', + homeTransactionId: homeTransactionId + } + var payloadHeaders = { 'Content-Type': 'application/json' }; + var transferResponse = await apiHelper.getResponseBody('POST', `${config.simCoreConnectorEndpoint}/sendmoney`, JSON.stringify(transferRequest), payloadHeaders); + await apiHelper.getResponseBody('PUT', `${config.simCoreConnectorEndpoint}/sendmoney/${transferResponse.transferId}`, JSON.stringify({ acceptParty: true }), payloadHeaders); + transferResponse = await apiHelper.getResponseBody('PUT', `${config.simCoreConnectorEndpoint}/sendmoney/${transferResponse.transferId}`, JSON.stringify({ acceptQuote: true }), payloadHeaders); + + + // Adding `.wait` just as a precaution since this downloads a file. - await t.click(TransferDashboardPage.downloadErrorsButton).wait(2000); + await t.maximizeWindow(); + await t.setTestSpeed(0.5); + var current_url = await t.eval(() => window.location.href); + await t.navigateTo(current_url); + await t.wait(15000); + await scroll(); + await scroll(); + await scroll(); + try{ + await t.click(TransferDashboardPage.downloadErrorsButton).wait(6000); await t.expect(fs.existsSync(expectedFilePath)).ok(); - const wb = xlsx.readFile(expectedFilePath); - + + } + catch(e){ + // console.error(e); + var current_url = await t.eval(() => window.location.href); + await t.navigateTo(current_url); + await t.wait(10000); + await scroll(); + await scroll(); + await scroll(); + await t.click(TransferDashboardPage.downloadErrorsButton).wait(6000); + await t.expect(fs.existsSync(expectedFilePath)).ok(); + + } + + const wb = xlsx.readFile(expectedFilePath); const errors = xlsx.utils.sheet_to_json(wb.Sheets['Errors']) as Error[]; await t.expect(errors.length).gt(0) @@ -606,19 +712,56 @@ test.meta({ // NOTE: Test harness uses `mojaloop-simulator` so this transaction is hardcoded // in the simulator's rules. // TODO: Update simulator to TTK so we can run more dynamic rules with templating. -test.meta({ +test.timeouts({ pageLoadTimeout: 45000 }).meta({ ID: '', STORY: '', description: '', })('Will display homeTransactionId in Technical Details if given by Payee DFSP', async (t) => { - await t.click(TransferDashboardPage.findATransferButton); - await t.click(TransferDashboardPage.findATransferModalSubmit); - - // Check transfer in spreadsheet exists in table - const transferRow = await TransferDashboardPage.getTransferRowById('61797537-a05a-469f-b2f3-059a9cd5bd8d'); - - // Open Details Modal - await t.click(transferRow); + var precision = 100; // 2 decimals + var randomnum = Math.floor(Math.random() * (10 * precision - 1 * precision) + 1 * precision) / (1*precision); + var homeTransactionId = "5105"; + var transferRequest = { + from: { + displayName: 'PayerFirst PayerLast', + idType: 'MSISDN', + idValue: `${config.senderpartyID}`, + extensionList: + [ + { + key: 4, + value: 2 + } + ] + }, + to: { + displayName: 'PartyFirst PartyLast', + idType: 'MSISDN', + idValue: `${config.receiverpartyID}` + }, + amountType: 'SEND', + currency: `${config.simcurrency}`, + amount: randomnum, + transactionType: 'TRANSFER', + note: 'test payment - Success transfer initiated by Automation', + homeTransactionId: homeTransactionId + } + var payloadHeaders = { 'Content-Type': 'application/json' }; + var transferResponse = await apiHelper.getResponseBody('POST', `${config.simCoreConnectorEndpoint}/sendmoney`, JSON.stringify(transferRequest), payloadHeaders); + //console.log(transferResponse); + await apiHelper.getResponseBody('PUT', `${config.simCoreConnectorEndpoint}/sendmoney/${transferResponse.transferId}`, JSON.stringify({ acceptParty: true }), payloadHeaders); + transferResponse = await apiHelper.getResponseBody('PUT', `${config.simCoreConnectorEndpoint}/sendmoney/${transferResponse.transferId}`, JSON.stringify({ acceptQuote: true }), payloadHeaders); + + await t.setTestSpeed(0.5); + await t.maximizeWindow(); + var current_url = await t.eval(() => window.location.href); + await t.navigateTo(current_url); + await t.wait(6000); + await t.click(TransferDashboardPage.findATransferButton).wait(10000); + await t.wait(18000); + + await t.typeText(TransferDashboardPage.transferIDTextBox, transferResponse.transferId, { paste: true, replace: false }).wait(10000) + .click(TransferDashboardPage.findATransferModalSubmit) + .click(TransferDashboardPage.transferIdList.withText(transferResponse.transferId)) await t.click(TransferDashboardPage.transferDetailsModalTechnicalDetailsTab); await t.expect(await TransferDashboardPage.homeTransferIdField().value).eql('5105') }); @@ -629,14 +772,53 @@ test.meta({ description: 'Recipient Name should not have "undefined"', }) ('Recipient Name should NOT have undefined when first name is not provided', async (t) => { - await t.click(TransferDashboardPage.findATransferButton); - await t.click(TransferDashboardPage.findATransferModalSubmit); - // Check transfer in spreadsheet exists in table - const transferRow = await TransferDashboardPage.getTransferRowById('aeac1d9f-2b60-4013-a6e0-a5cfa316a4f6'); + var precision = 100; // 2 decimals + var randomnum = Math.floor(Math.random() * (10 * precision - 1 * precision) + 1 * precision) / (1*precision); + var homeTransactionId = uuidv4(); + var transferRequest = { + from: { + firstName: "PayerFirst", + middleName: "PayerMiddle", + lastName: "PayerLast", + idType: 'MSISDN', + idValue: `${config.senderpartyID}`, + extensionList: + [ + { + key: 4, + value: 2 + } + ] + }, + to: { + displayName: 'Payeemiddle Payeelast', + idType: 'MSISDN', + idValue: `${config.receiverpartyID}` + }, + + amountType: 'SEND', + currency: `${config.simcurrency}`, + amount: randomnum, + transactionType: 'TRANSFER', + note: 'test payment - Success transfer initiated by Automation', + homeTransactionId: homeTransactionId + } + var payloadHeaders = { 'Content-Type': 'application/json' }; + var transferResponse = await apiHelper.getResponseBody('POST', `${config.simCoreConnectorEndpoint}/sendmoney`, JSON.stringify(transferRequest), payloadHeaders); + await apiHelper.getResponseBody('PUT', `${config.simCoreConnectorEndpoint}/sendmoney/${transferResponse.transferId}`, JSON.stringify({ acceptParty: true }), payloadHeaders); + transferResponse = await apiHelper.getResponseBody('PUT', `${config.simCoreConnectorEndpoint}/sendmoney/${transferResponse.transferId}`, JSON.stringify({ acceptQuote: true }), payloadHeaders); + + + + await t.maximizeWindow() + await t.click(TransferDashboardPage.findATransferButton); + await t.wait(18000); - // Open Details Modal - await t.click(transferRow); + await t.typeText(TransferDashboardPage.transferIDTextBox, transferResponse.transferId, { paste: true, replace: false }).wait(10000) + .click(TransferDashboardPage.findATransferModalSubmit) + .click(TransferDashboardPage.transferIdList.withText(transferResponse.transferId)) + await t.expect(await TransferDashboardPage.recipientField().value).eql('Payeemiddle Payeelast') }); @@ -645,14 +827,49 @@ test.meta({ STORY: 'MMD-2093', description: 'Recipient Name should not have "undefined"', })('Recipient Name should NOT have undefined when middle name is not provided', async (t) => { - await t.click(TransferDashboardPage.findATransferButton); - await t.click(TransferDashboardPage.findATransferModalSubmit); + var precision = 100; // 2 decimals + var randomnum = Math.floor(Math.random() * (10 * precision - 1 * precision) + 1 * precision) / (1*precision); + var homeTransactionId = uuidv4(); + var transferRequest = { + from: { + firstName: "PayerFirst", + middleName: "PayerMiddle", + lastName: "PayerLast", + idType: 'MSISDN', + idValue: `${config.senderpartyID}`, + extensionList: + [ + { + key: 4, + value: 2 + } + ] + }, + to: { + displayName: 'Payeefirst Payeelast', + idType: 'MSISDN', + idValue: `${config.receiverpartyID}` + }, + + amountType: 'SEND', + currency: `${config.simcurrency}`, + amount: randomnum, + transactionType: 'TRANSFER', + note: 'test payment - Success transfer initiated by Automation', + homeTransactionId: homeTransactionId + } + var payloadHeaders = { 'Content-Type': 'application/json' }; + var transferResponse = await apiHelper.getResponseBody('POST', `${config.simCoreConnectorEndpoint}/sendmoney`, JSON.stringify(transferRequest), payloadHeaders); + await apiHelper.getResponseBody('PUT', `${config.simCoreConnectorEndpoint}/sendmoney/${transferResponse.transferId}`, JSON.stringify({ acceptParty: true }), payloadHeaders); + transferResponse = await apiHelper.getResponseBody('PUT', `${config.simCoreConnectorEndpoint}/sendmoney/${transferResponse.transferId}`, JSON.stringify({ acceptQuote: true }), payloadHeaders); - // Check transfer in spreadsheet exists in table - const transferRow = await TransferDashboardPage.getTransferRowById('61797537-a05a-469f-b2f3-059a9cd5bd4b'); + await t.maximizeWindow() + await t.click(TransferDashboardPage.findATransferButton); + await t.wait(18000); - // Open Details Modal - await t.click(transferRow); + await t.typeText(TransferDashboardPage.transferIDTextBox, transferResponse.transferId, { paste: true, replace: false }).wait(10000) + .click(TransferDashboardPage.findATransferModalSubmit) + .click(TransferDashboardPage.transferIdList.withText(transferResponse.transferId)) await t.expect(await TransferDashboardPage.recipientField().value).eql('Payeefirst Payeelast') }); @@ -662,30 +879,104 @@ test.meta({ STORY: 'MMD-2093', description: 'Recipient Name should not have "undefined"', })('Recipient Name should NOT have undefined when last name is not provided', async (t) => { + var precision = 100; // 2 decimals + var randomnum = Math.floor(Math.random() * (10 * precision - 1 * precision) + 1 * precision) / (1*precision); + var homeTransactionId = uuidv4(); + var transferRequest = { + from: { + firstName: "PayerFirst", + middleName: "PayerMiddle", + lastName: "PayerLast", + idType: 'MSISDN', + idValue: `${config.senderpartyID}`, + extensionList: + [ + { + key: 4, + value: 2 + } + ] + }, + to: { + displayName: 'Payeefirst Payeemiddle', + idType: 'MSISDN', + idValue: `${config.receiverpartyID}` + }, + + amountType: 'SEND', + currency: `${config.simcurrency}`, + amount: randomnum, + transactionType: 'TRANSFER', + note: 'test payment - Success transfer initiated by Automation', + homeTransactionId: homeTransactionId + } + var payloadHeaders = { 'Content-Type': 'application/json' }; + var transferResponse = await apiHelper.getResponseBody('POST', `${config.simCoreConnectorEndpoint}/sendmoney`, JSON.stringify(transferRequest), payloadHeaders); + await apiHelper.getResponseBody('PUT', `${config.simCoreConnectorEndpoint}/sendmoney/${transferResponse.transferId}`, JSON.stringify({ acceptParty: true }), payloadHeaders); + transferResponse = await apiHelper.getResponseBody('PUT', `${config.simCoreConnectorEndpoint}/sendmoney/${transferResponse.transferId}`, JSON.stringify({ acceptQuote: true }), payloadHeaders); + + + + await t.maximizeWindow() await t.click(TransferDashboardPage.findATransferButton); - await t.click(TransferDashboardPage.findATransferModalSubmit); + await t.wait(18000); - // Check transfer in spreadsheet exists in table - const transferRow = await TransferDashboardPage.getTransferRowById('61797537-a05a-469f-b2f3-059a9cd5bd5f'); - - // Open Details Modal - await t.click(transferRow); + await t.typeText(TransferDashboardPage.transferIDTextBox, transferResponse.transferId, { paste: true, replace: false }).wait(10000) + .click(TransferDashboardPage.findATransferModalSubmit) + .click(TransferDashboardPage.transferIdList.withText(transferResponse.transferId)) await t.expect(await TransferDashboardPage.recipientField().value).eql('Payeefirst Payeemiddle') }); -test.meta({ +test.timeouts({ pageLoadTimeout: 45000 }).meta({ ID: '', STORY: 'MMD-2093', description: 'Recipient Name should not have "undefined"', })('Recipient Name should NOT have undefined when first and middle name is not provided', async (t) => { - await t.click(TransferDashboardPage.findATransferButton); - await t.click(TransferDashboardPage.findATransferModalSubmit); + var precision = 100; // 2 decimals + var randomnum = Math.floor(Math.random() * (10 * precision - 1 * precision) + 1 * precision) / (1*precision); + var homeTransactionId = uuidv4(); + var transferRequest = { + from: { + firstName: "PayerFirst", + middleName: "PayerMiddle", + lastName: "PayerLast", + idType: 'MSISDN', + idValue: `${config.senderpartyID}`, + extensionList: + [ + { + key: 4, + value: 2 + } + ] + }, + to: { + displayName: 'Payeelast', + idType: 'MSISDN', + idValue: `${config.receiverpartyID}` + }, + + amountType: 'SEND', + currency: `${config.simcurrency}`, + amount: randomnum, + transactionType: 'TRANSFER', + note: 'test payment - Success transfer initiated by Automation', + homeTransactionId: homeTransactionId + } + var payloadHeaders = { 'Content-Type': 'application/json' }; + var transferResponse = await apiHelper.getResponseBody('POST', `${config.simCoreConnectorEndpoint}/sendmoney`, JSON.stringify(transferRequest), payloadHeaders); + await apiHelper.getResponseBody('PUT', `${config.simCoreConnectorEndpoint}/sendmoney/${transferResponse.transferId}`, JSON.stringify({ acceptParty: true }), payloadHeaders); + transferResponse = await apiHelper.getResponseBody('PUT', `${config.simCoreConnectorEndpoint}/sendmoney/${transferResponse.transferId}`, JSON.stringify({ acceptQuote: true }), payloadHeaders); - // Check transfer in spreadsheet exists in table - const transferRow = await TransferDashboardPage.getTransferRowById('dba4255b-bc34-4e1b-9018-7f4c745915b2'); + await t.maximizeWindow(); + await t.setTestSpeed(0.5); + await t.click(TransferDashboardPage.findATransferButton); + await t.wait(18000); - // Open Details Modal - await t.click(transferRow); + await t.typeText(TransferDashboardPage.transferIDTextBox, transferResponse.transferId, { paste: true, replace: false }).wait(10000) + .click(TransferDashboardPage.findATransferModalSubmit) + .wait(2000) + .click(TransferDashboardPage.transferIdList.withText(transferResponse.transferId)) await t.expect(await TransferDashboardPage.recipientField().value).eql('Payeelast') }); @@ -694,14 +985,14 @@ test.meta({ STORY: 'MMD-1463', description: 'Improved filtering of transactions in advanced filtering screen', })('Advanced Filtering by direction of funds and payee alias', async (t) => { - + await t.maximizeWindow() await t.click(TransferDashboardPage.findATransferButton); await t.click(TransferDashboardPage.findATransferModalAdvancedFiltering); // Set direction of funds and payee alias await t.click(TransferDashboardPage.findATransferModalDirectionOfFundsField); await t.click(TransferDashboardPage.findATransferModalDirectionOfFundsOption.withText('Outbound').parent()); - await t.typeText(TransferDashboardPage.findATransferModalPayeeAliasField, '22556999125'); + await t.typeText(TransferDashboardPage.findATransferModalPayeeAliasField, `${config.receiverpartyID}`); await t.click(TransferDashboardPage.findATransferModalAliasTypeField); await t.click(TransferDashboardPage.findATransferModalAliasTypeOption.withText('Msisdn').parent()); @@ -711,10 +1002,12 @@ test.meta({ // Open Details Modal for (let i = 0 ; i < transferRows.length; i++) { + if((transferRows[i].status.value).toString() === "Success" ){ await t.click(transferRows[i].transferId); - await t.expect(await TransferDashboardPage.transferDetailsModalTechnicalDetailsRecipientDetailsField().value).eql('MSISDN 22556999125'); + await t.expect(await TransferDashboardPage.transferDetailsModalTechnicalDetailsRecipientDetailsField().value).eql('MSISDN '+`${config.receiverpartyID}`); await t.expect(await TransferDashboardPage.transferDetailsModalTechnicalDetailsDirection().value).eql('OUTBOUND'); await t.click(TransferDashboardPage.findATransferModalCloseButton); } + } });