Repository: UK-Export-Finance/dtfs2
Pull request #4280: chore(DTFS2-7431): replace insert one deal with create bssewcs deal function
Author: login: vamshidharukef
Labels: name: chore
Created: 2025-03-26T22:44:13Z | Merged: 2025-04-01T20:38:16Z

## Introduction :pencil2:
BSS/EWCS E2E tests were creating deals by calling the API directly.
We want to prevent specific user roles (like maker, checker), from calling Portal API directly.
This PR updates all E2E tests that create individual BSS/EWCS deals, to be created via the UI, mimicking a true user journey.

## Resolution :heavy_check_mark:
Create createBssEwcsDeal cypress command.

## Miscellaneous :heavy_plus_sign:
Update E2E tests




Diff:
diff --git a/e2e-tests/portal/cypress/e2e/journeys/maker-about-supply-contract/fill-in-financial-page-create-element.spec.js b/e2e-tests/portal/cypress/e2e/journeys/maker-about-supply-contract/fill-in-financial-page-create-element.spec.js
index 2d58d7a9bb7..143cfee7f84 100644
--- a/e2e-tests/portal/cypress/e2e/journeys/maker-about-supply-contract/fill-in-financial-page-create-element.spec.js
+++ b/e2e-tests/portal/cypress/e2e/journeys/maker-about-supply-contract/fill-in-financial-page-create-element.spec.js
@@ -2,17 +2,21 @@ const { CURRENCY } = require('@ukef/dtfs2-common');
 const { contract, contractAboutFinancial, defaults } = require('../../pages');
 const partials = require('../../partials');
 const MOCK_USERS = require('../../../../../e2e-fixtures');
+const relative = require('../../relativeURL');
 const aDealWithAboutBuyerComplete = require('./dealWithSecondPageComplete.json');
 
 const { BANK1_MAKER1 } = MOCK_USERS;
 
 context('Financial page form - create element and check if inserted into deal', () => {
-  let deal;
+  let bssDealId;
+  let contractUrl;
+  const additionalRefName = 'UKEF test bank (Delegated)';
 
   before(() => {
     console.info(JSON.stringify(aDealWithAboutBuyerComplete, null, 4));
-    cy.insertOneDeal(aDealWithAboutBuyerComplete, BANK1_MAKER1).then((insertedDeal) => {
-      deal = insertedDeal;
+    cy.createBssEwcsDeal().then((dealId) => {
+      bssDealId = dealId;
+      contractUrl = relative(`/contract/${bssDealId}`);
     });
   });
 
@@ -20,12 +24,12 @@ context('Financial page form - create element and check if inserted into deal',
     cy.login(BANK1_MAKER1);
 
     // navigate to the about-buyer page; use the nav so we have it covered in a test..
-    contract.visit(deal);
+    cy.visit(contractUrl);
     contract.aboutSupplierDetailsLink().click();
     partials.taskListHeader.itemLink('buyer').click();
     partials.taskListHeader.itemLink('financial-information').click();
 
-    cy.title().should('eq', `Financial information - ${deal.additionalRefName}${defaults.pageTitleAppend}`);
+    cy.title().should('eq', `Financial information - ${additionalRefName}${defaults.pageTitleAppend}`);
 
     // set a GBP value, so we don't need to fill in the exchange-rate fields
     cy.keyboardInput(contractAboutFinancial.supplyContractValue(), '10000');
@@ -37,7 +41,7 @@ context('Financial page form - create element and check if inserted into deal',
 
     contractAboutFinancial.preview().click();
 
-    cy.getDeal(deal._id, BANK1_MAKER1).then((updatedDeal) => {
+    cy.getDeal(bssDealId, BANK1_MAKER1).then((updatedDeal) => {
       // ensure the updated deal does not contain additional intruder field
       expect(updatedDeal.submissionDetails.intruder).to.be.an('undefined');
     });
diff --git a/e2e-tests/portal/cypress/e2e/journeys/maker-about-supply-contract/fill-in-supply-contract-create-element.spec.js b/e2e-tests/portal/cypress/e2e/journeys/maker-about-supply-contract/fill-in-supply-contract-create-element.spec.js
index abb4ef63295..7bf58150c0e 100644
--- a/e2e-tests/portal/cypress/e2e/journeys/maker-about-supply-contract/fill-in-supply-contract-create-element.spec.js
+++ b/e2e-tests/portal/cypress/e2e/journeys/maker-about-supply-contract/fill-in-supply-contract-create-element.spec.js
@@ -2,35 +2,20 @@ const { MOCK_COMPANY_REGISTRATION_NUMBERS } = require('@ukef/dtfs2-common');
 const { contract, contractAboutSupplier } = require('../../pages');
 const MOCK_USERS = require('../../../../../e2e-fixtures');
 const CONSTANTS = require('../../../fixtures/constants');
-const twentyOneDeals = require('../../../fixtures/deal-dashboard-data');
+const relative = require('../../relativeURL');
 
 const { BANK1_MAKER1, ADMIN } = MOCK_USERS;
-const { INDUSTRY_SECTOR_CODES, DEALS } = CONSTANTS;
+const { INDUSTRY_SECTOR_CODES } = CONSTANTS;
 
 context('Supply contract form - create element and check if inserted into deal', () => {
-  let deal;
+  let bssDealId;
+  let contractUrl;
 
   before(() => {
-    const aDealWithAboutSupplyContractInStatus = (status) => {
-      const candidates = twentyOneDeals.filter(
-        (aDeal) =>
-          aDeal.submissionDetails &&
-          status === aDeal.submissionDetails.status &&
-          aDeal.status === DEALS.DEAL_STATUS.DRAFT &&
-          (!aDeal.details || !aDeal.details.submissionDate),
-      );
-
-      const aDeal = candidates[0];
-      if (!aDeal) {
-        throw new Error('no suitable test data found');
-      } else {
-        return aDeal;
-      }
-    };
-
     cy.deleteDeals(ADMIN);
-    cy.insertOneDeal(aDealWithAboutSupplyContractInStatus('Not started'), BANK1_MAKER1).then((insertedDeal) => {
-      deal = insertedDeal;
+    cy.createBssEwcsDeal().then((dealId) => {
+      bssDealId = dealId;
+      contractUrl = relative(`/contract/${bssDealId}`);
     });
   });
 
@@ -38,7 +23,7 @@ context('Supply contract form - create element and check if inserted into deal',
     cy.login(BANK1_MAKER1);
 
     // go the long way for the first test- actually clicking via the contract page to prove the link..
-    contract.visit(deal);
+    cy.visit(contractUrl);
 
     contract.aboutSupplierDetailsLink().click();
 
@@ -64,7 +49,7 @@ context('Supply contract form - create element and check if inserted into deal',
 
     contractAboutSupplier.nextPage().click();
 
-    cy.getDeal(deal._id, BANK1_MAKER1).then((updatedDeal) => {
+    cy.getDeal(bssDealId, BANK1_MAKER1).then((updatedDeal) => {
       // ensure the updated deal does not contain additional intruder field
       expect(updatedDeal.submissionDetails.intruder).to.be.an('undefined');
     });
diff --git a/e2e-tests/portal/cypress/e2e/journeys/maker-bond/bond-details.spec.js b/e2e-tests/portal/cypress/e2e/journeys/maker-bond/bond-details.spec.js
index da2dcdadd0b..9472ac3ae31 100644
--- a/e2e-tests/portal/cypress/e2e/journeys/maker-bond/bond-details.spec.js
+++ b/e2e-tests/portal/cypress/e2e/journeys/maker-bond/bond-details.spec.js
@@ -1,32 +1,24 @@
-const { CURRENCY } = require('@ukef/dtfs2-common');
 const pages = require('../../pages');
 const partials = require('../../partials');
 const fillBondForm = require('./fill-bond-forms');
 const assertBondFormValues = require('./assert-bond-form-values');
 const BOND_FORM_VALUES = require('./bond-form-values');
 const MOCK_USERS = require('../../../../../e2e-fixtures');
+const relative = require('../../relativeURL');
 
 const { ADMIN, BANK1_MAKER1 } = MOCK_USERS;
 
-const MOCK_DEAL = {
-  bankInternalRefName: 'someDealId',
-  additionalRefName: 'someDealName',
-  submissionDetails: {
-    supplyContractCurrency: {
-      id: CURRENCY.GBP,
-    },
-  },
-};
-
 context('Bond Details', () => {
-  let deal;
+  let bssDealId;
+  let contractUrl;
 
   beforeEach(() => {
     cy.deleteDeals(ADMIN);
-    cy.insertOneDeal(MOCK_DEAL, BANK1_MAKER1).then((insertedDeal) => {
-      deal = insertedDeal;
-
-      cy.loginGoToDealPage(BANK1_MAKER1, deal);
+    cy.createBssEwcsDeal().then((dealId) => {
+      bssDealId = dealId;
+      contractUrl = relative(`/contract/${bssDealId}`);
+      cy.login(BANK1_MAKER1);
+      cy.visit(contractUrl);
 
       cy.clickAddBondButton();
     });
@@ -34,7 +26,8 @@ context('Bond Details', () => {
 
   describe('after submitting one form field and navigating back to `Bond Details` page', () => {
     it('should display validation errors for all required fields', () => {
-      cy.loginGoToDealPage(BANK1_MAKER1, deal);
+      cy.login(BANK1_MAKER1);
+      cy.visit(contractUrl);
 
       cy.clickAddBondButton();
 
@@ -174,7 +167,8 @@ context('Bond Details', () => {
 
   describe('When a user selects `unissued` facility stage', () => {
     beforeEach(() => {
-      cy.loginGoToDealPage(BANK1_MAKER1, deal);
+      cy.login(BANK1_MAKER1);
+      cy.visit(contractUrl);
 
       cy.clickAddBondButton();
     });
@@ -238,7 +232,8 @@ context('Bond Details', () => {
     });
 
     it('form submit should prepopulate submitted form fields when returning back to `Bond Details` page', () => {
-      cy.loginGoToDealPage(BANK1_MAKER1, deal);
+      cy.login(BANK1_MAKER1);
+      cy.visit(contractUrl);
 
       cy.clickAddBondButton();
 
@@ -259,7 +254,8 @@ context('Bond Details', () => {
 
   describe('When a user selects `issued` facility stage', () => {
     it('should render additional form fields', () => {
-      cy.loginGoToDealPage(BANK1_MAKER1, deal);
+      cy.login(BANK1_MAKER1);
+      cy.visit(contractUrl);
 
       cy.clickAddBondButton();
 
@@ -276,7 +272,8 @@ context('Bond Details', () => {
 
     describe('after form submit and navigating back to `Bond Details` page', () => {
       it('should display validation errors for required fields and `issued` required fields', () => {
-        cy.loginGoToDealPage(BANK1_MAKER1, deal);
+        cy.login(BANK1_MAKER1);
+        cy.visit(contractUrl);
 
         cy.clickAddBondButton();
         pages.bondDetails.bondTypeInput().select(BOND_FORM_VALUES.DETAILS.bondType.value);
@@ -296,7 +293,8 @@ context('Bond Details', () => {
     });
 
     it('form submit should progress to `Bond Financial Details` page and prepopulate submitted form fields when returning back to `Bond Details` page', () => {
-      cy.loginGoToDealPage(BANK1_MAKER1, deal);
+      cy.login(BANK1_MAKER1);
+      cy.visit(contractUrl);
 
       cy.clickAddBondButton();
 
@@ -315,7 +313,8 @@ context('Bond Details', () => {
 
     describe('When a user clicks `save and go back` button', () => {
       it('should save the form data, return to Deal page and prepopulate form fields when returning back to `Bond Details` page', () => {
-        cy.loginGoToDealPage(BANK1_MAKER1, deal);
+        cy.login(BANK1_MAKER1);
+        cy.visit(contractUrl);
 
         cy.clickAddBondButton();
 
diff --git a/e2e-tests/portal/cypress/e2e/journeys/maker-bond/bond-fee-details.spec.js b/e2e-tests/portal/cypress/e2e/journeys/maker-bond/bond-fee-details.spec.js
index 770d658b383..31274b38370 100644
--- a/e2e-tests/portal/cypress/e2e/journeys/maker-bond/bond-fee-details.spec.js
+++ b/e2e-tests/portal/cypress/e2e/journeys/maker-bond/bond-fee-details.spec.js
@@ -1,24 +1,15 @@
-const { CURRENCY } = require('@ukef/dtfs2-common');
 const pages = require('../../pages');
 const partials = require('../../partials');
 const fillBondForm = require('./fill-bond-forms');
 const assertBondFormValues = require('./assert-bond-form-values');
 const MOCK_USERS = require('../../../../../e2e-fixtures');
+const relative = require('../../relativeURL');
 
 const { ADMIN, BANK1_MAKER1 } = MOCK_USERS;
 
-const MOCK_DEAL = {
-  bankInternalRefName: 'someDealId',
-  additionalRefName: 'someDealName',
-  submissionDetails: {
-    supplyContractCurrency: {
-      id: CURRENCY.GBP,
-    },
-  },
-};
-
-const goToBondFeeDetailsPage = (deal) => {
-  cy.loginGoToDealPage(BANK1_MAKER1, deal);
+const goToBondFeeDetailsPage = (bssDealId) => {
+  cy.login(BANK1_MAKER1);
+  cy.visit(relative(`/contract/${bssDealId}`));
 
   cy.clickAddBondButton();
   partials.taskListHeader.itemLink('fee-details').click();
@@ -26,18 +17,20 @@ const goToBondFeeDetailsPage = (deal) => {
 };
 
 context('Bond Fee Details', () => {
-  let deal;
+  let bssDealId;
+  let contractUrl;
 
   beforeEach(() => {
     cy.deleteDeals(ADMIN);
-    cy.insertOneDeal(MOCK_DEAL, BANK1_MAKER1).then((insertedDeal) => {
-      deal = insertedDeal;
+    cy.createBssEwcsDeal().then((dealId) => {
+      bssDealId = dealId;
+      contractUrl = relative(`/contract/${bssDealId}`);
     });
   });
 
   describe('when submitting an empty form and navigating back to `Bond Fee Details` page', () => {
     it('should display validation errors for all required fields', () => {
-      goToBondFeeDetailsPage(deal);
+      goToBondFeeDetailsPage(bssDealId);
       cy.title().should('eq', `Bond Fee Details${pages.defaults.pageTitleAppend}`);
 
       cy.clickSubmitButton();
@@ -56,7 +49,7 @@ context('Bond Fee Details', () => {
 
   describe('after submitting one form field and navigating back to `Bond Fee Details` page', () => {
     it('should display validation errors for all required fields (including nested radio group)', () => {
-      goToBondFeeDetailsPage(deal);
+      goToBondFeeDetailsPage(bssDealId);
 
       pages.bondFeeDetails.feeTypeInAdvanceInput().click();
 
@@ -75,7 +68,8 @@ context('Bond Fee Details', () => {
   });
 
   it('should display the correct title for bond fee details', () => {
-    cy.loginGoToDealPage(BANK1_MAKER1, deal);
+    cy.login(BANK1_MAKER1);
+    cy.visit(contractUrl);
 
     cy.clickAddBondButton();
     partials.taskListHeader.itemLink('fee-details').click();
@@ -84,7 +78,8 @@ context('Bond Fee Details', () => {
   });
 
   it('form submit of all required fields should render a `completed` status tag only for `Bond Fee Details` in task list header', () => {
-    cy.loginGoToDealPage(BANK1_MAKER1, deal);
+    cy.login(BANK1_MAKER1);
+    cy.visit(contractUrl);
 
     cy.clickAddBondButton();
     partials.taskListHeader.itemLink('fee-details').click();
@@ -99,7 +94,7 @@ context('Bond Fee Details', () => {
   });
 
   it('form submit should progress to the `Bond Preview` page and prepopulate submitted form fields when returning back to `Bond Fee Details` page', () => {
-    goToBondFeeDetailsPage(deal);
+    goToBondFeeDetailsPage(bssDealId);
 
     fillBondForm.feeDetails();
     cy.clickSubmitButton();
@@ -116,7 +111,7 @@ context('Bond Fee Details', () => {
 
   describe('when a user selects that the Fee Type is `At maturity`', () => {
     it('should NOT render `Fee frequency` radio buttons', () => {
-      goToBondFeeDetailsPage(deal);
+      goToBondFeeDetailsPage(bssDealId);
 
       pages.bondFeeDetails.feeTypeAtMaturityInput().click();
 
@@ -126,7 +121,7 @@ context('Bond Fee Details', () => {
 
   describe('When a user clicks `save and go back` button', () => {
     it('should save the form data, return to Deal page and prepopulate form fields when returning back to `Bond Fee Details` page', () => {
-      goToBondFeeDetailsPage(deal);
+      goToBondFeeDetailsPage(bssDealId);
 
       fillBondForm.feeDetails();
 
diff --git a/e2e-tests/portal/cypress/e2e/journeys/maker-bond/bond-financial-details.spec.js b/e2e-tests/portal/cypress/e2e/journeys/maker-bond/bond-financial-details.spec.js
index df294e27f71..bbd50ffcc02 100644
--- a/e2e-tests/portal/cypress/e2e/journeys/maker-bond/bond-financial-details.spec.js
+++ b/e2e-tests/portal/cypress/e2e/journeys/maker-bond/bond-financial-details.spec.js
@@ -1,4 +1,3 @@
-const { CURRENCY } = require('@ukef/dtfs2-common');
 const pages = require('../../pages');
 const partials = require('../../partials');
 const fillBondForm = require('./fill-bond-forms');
@@ -11,18 +10,9 @@ const { yearWithZeroLetter } = require('../../../../../e2e-fixtures/dateConstant
 
 const { ADMIN, BANK1_MAKER1 } = MOCK_USERS;
 
-const MOCK_DEAL = {
-  bankInternalRefName: 'someDealId',
-  additionalRefName: 'someDealName',
-  submissionDetails: {
-    supplyContractCurrency: {
-      id: CURRENCY.GBP,
-    },
-  },
-};
-
-const goToBondFinancialDetailsPage = (deal) => {
-  cy.loginGoToDealPage(BANK1_MAKER1, deal);
+const goToBondFinancialDetailsPage = (bssDealId) => {
+  cy.login(BANK1_MAKER1);
+  cy.visit(relative(`/contract/${bssDealId}`));
 
   cy.clickAddBondButton();
   partials.taskListHeader.itemLink('financial-details').click();
@@ -32,18 +22,21 @@ const goToBondFinancialDetailsPage = (deal) => {
 };
 
 context('Bond Financial Details', () => {
-  let deal;
+  let bssDealId;
+  let contractUrl;
 
   beforeEach(() => {
     cy.deleteDeals(ADMIN);
-    cy.insertOneDeal(MOCK_DEAL, BANK1_MAKER1).then((insertedDeal) => {
-      deal = insertedDeal;
+    cy.createBssEwcsDeal().then((dealId) => {
+      bssDealId = dealId;
+      contractUrl = relative(`/contract/${bssDealId}`);
     });
   });
 
   describe('after submitting one form field and navigating back to `Bond Financial Details` page', () => {
     it('should render validation errors for all required fields', () => {
-      cy.loginGoToDealPage(BANK1_MAKER1, deal);
+      cy.login(BANK1_MAKER1);
+      cy.visit(contractUrl);
 
       cy.clickAddBondButton();
       partials.taskListHeader.itemLink('financial-details').click();
@@ -70,7 +63,8 @@ context('Bond Financial Details', () => {
 
   describe('when changing the `risk margin fee` field', () => {
     it('should dynamically update the `Guarantee Fee Payable By Bank` value on blur', () => {
-      cy.loginGoToDealPage(BANK1_MAKER1, deal);
+      cy.login(BANK1_MAKER1);
+      cy.visit(contractUrl);
 
       cy.clickAddBondButton();
       partials.taskListHeader.itemLink('financial-details').click();
@@ -97,7 +91,8 @@ context('Bond Financial Details', () => {
 
   describe('when changing the `bond value` or `covered percentage` field', () => {
     it('should dynamically update the `UKEF exposure` value on blur', () => {
-      cy.loginGoToDealPage(BANK1_MAKER1, deal);
+      cy.login(BANK1_MAKER1);
+      cy.visit(contractUrl);
 
       cy.clickAddBondButton();
       partials.taskListHeader.itemLink('financial-details').click();
@@ -126,7 +121,8 @@ context('Bond Financial Details', () => {
   });
 
   it('should display the correct title for bond financial details', () => {
-    cy.loginGoToDealPage(BANK1_MAKER1, deal);
+    cy.login(BANK1_MAKER1);
+    cy.visit(contractUrl);
 
     cy.clickAddBondButton();
     partials.taskListHeader.itemLink('financial-details').click();
@@ -135,7 +131,8 @@ context('Bond Financial Details', () => {
   });
 
   it('form submit of all required fields should render a `completed` status tag only for `Bond Financial Details` in task list header', () => {
-    cy.loginGoToDealPage(BANK1_MAKER1, deal);
+    cy.login(BANK1_MAKER1);
+    cy.visit(contractUrl);
 
     cy.clickAddBondButton();
     partials.taskListHeader.itemLink('financial-details').click();
@@ -151,7 +148,8 @@ context('Bond Financial Details', () => {
 
   describe('When a user submits the `Bond Financial Details` form', () => {
     it('should progress to `Bond Fee Details` page and prepopulate form fields when returning back to `Bond Financial Details` page', () => {
-      cy.loginGoToDealPage(BANK1_MAKER1, deal);
+      cy.login(BANK1_MAKER1);
+      cy.visit(contractUrl);
 
       cy.clickAddBondButton();
       partials.taskListHeader.itemLink('financial-details').click();
@@ -173,7 +171,7 @@ context('Bond Financial Details', () => {
 
   describe('when a user selects that the currency is NOT the same as the Supply Contract currency', () => {
     it('should render additional form fields', () => {
-      goToBondFinancialDetailsPage(deal);
+      goToBondFinancialDetailsPage(bssDealId);
       pages.bondFinancialDetails.currencySameAsSupplyContractCurrencyNoInput().click();
 
       pages.bondFinancialDetails.currencyInput().should('be.visible');
@@ -184,7 +182,7 @@ context('Bond Financial Details', () => {
     });
 
     it('form submit should progress to `Bond Fee Details` page and prepopulate submitted form fields when returning back to `Bond Financial Details` page', () => {
-      goToBondFinancialDetailsPage(deal);
+      goToBondFinancialDetailsPage(bssDealId);
       fillBondForm.financialDetails.transactionCurrencyNotTheSameAsSupplyContractCurrency();
       cy.clickSubmitButton();
 
@@ -200,7 +198,7 @@ context('Bond Financial Details', () => {
 
     describe('after form submit and navigating back to `Bond Financial Details` page', () => {
       it('should render validation errors for required fields and `currency is NOT the same` required fields', () => {
-        goToBondFinancialDetailsPage(deal);
+        goToBondFinancialDetailsPage(bssDealId);
         pages.bondFinancialDetails.currencySameAsSupplyContractCurrencyNoInput().click();
         cy.clickSubmitButton();
 
@@ -240,7 +238,7 @@ context('Bond Financial Details', () => {
     });
 
     it("should populate the bond's `value` in Deal page with the submitted bond currency", () => {
-      goToBondFinancialDetailsPage(deal);
+      goToBondFinancialDetailsPage(bssDealId);
 
       cy.keyboardInput(pages.bondFinancialDetails.facilityValueInput(), BOND_FORM_VALUES.FINANCIAL_DETAILS.value);
       pages.bondFinancialDetails.currencySameAsSupplyContractCurrencyNoInput().click();
@@ -253,7 +251,7 @@ context('Bond Financial Details', () => {
 
         cy.clickSubmitButton();
         cy.clickSaveGoBackButton();
-        cy.url().should('eq', relative(`/contract/${deal._id}`));
+        cy.url().should('eq', contractUrl);
 
         const row = pages.contract.bondTransactionsTable.row(bondId);
 
@@ -281,7 +279,7 @@ context('Bond Financial Details', () => {
       };
 
       it('should render validation error', () => {
-        goToBondFinancialDetailsPage(deal);
+        goToBondFinancialDetailsPage(bssDealId);
         fillBondForm.financialDetails.transactionCurrencyNotTheSameAsSupplyContractCurrency();
 
         fillAndSubmitRiskMarginFee('test');
@@ -315,7 +313,7 @@ context('Bond Financial Details', () => {
       };
 
       it('should render validation error', () => {
-        goToBondFinancialDetailsPage(deal);
+        goToBondFinancialDetailsPage(bssDealId);
         fillBondForm.financialDetails.transactionCurrencyNotTheSameAsSupplyContractCurrency();
 
         fillAndSubmitCoveredPercentage('12.34567');
@@ -340,7 +338,7 @@ context('Bond Financial Details', () => {
     };
 
     it('should render validation error', () => {
-      goToBondFinancialDetailsPage(deal);
+      goToBondFinancialDetailsPage(bssDealId);
       fillBondForm.financialDetails.transactionCurrencyNotTheSameAsSupplyContractCurrency();
 
       fillAndSubmitMinimumRiskMarginFee('12.345');
@@ -353,7 +351,8 @@ context('Bond Financial Details', () => {
 
   describe('When a user clicks `save and go back` button', () => {
     it('should save the form data, return to Deal page and repopulate form fields when returning back to `Bond Financial Details` page', () => {
-      cy.loginGoToDealPage(BANK1_MAKER1, deal);
+      cy.login(BANK1_MAKER1);
+      cy.visit(contractUrl);
 
       cy.clickAddBondButton();
       partials.taskListHeader.itemLink('financial-details').click();
diff --git a/e2e-tests/portal/cypress/e2e/journeys/maker-bond/bond.spec.js b/e2e-tests/portal/cypress/e2e/journeys/maker-bond/bond.spec.js
index fd88a7e786a..fb78bc7f0bf 100644
--- a/e2e-tests/portal/cypress/e2e/journeys/maker-bond/bond.spec.js
+++ b/e2e-tests/portal/cypress/e2e/journeys/maker-bond/bond.spec.js
@@ -20,13 +20,20 @@ const MOCK_DEAL = {
 };
 
 context('Add a Bond to a Deal', () => {
-  let deal;
+  let bssDealId;
+  let contractUrl;
 
   beforeEach(() => {
     cy.deleteDeals(ADMIN);
-    cy.insertOneDeal(MOCK_DEAL, BANK1_MAKER1).then((insertedDeal) => {
-      deal = insertedDeal;
+    cy.createBssEwcsDeal().then((dealId) => {
+      bssDealId = dealId;
+      contractUrl = relative(`/contract/${bssDealId}`);
     });
+    cy.completeAboutSupplierSection({
+      exporterCompanyName: 'Exporter Company Name',
+    });
+    cy.completeAboutBuyerSection();
+    cy.completeAboutFinancialSection();
   });
 
   it('should allow a user to create a Deal, pass Red Line and add a Bond to the deal', () => {
@@ -84,7 +91,8 @@ context('Add a Bond to a Deal', () => {
 
   describe('when a user submits a Bond form without completing any fields', () => {
     it('bond should display `Incomplete` status in Deal page', () => {
-      cy.loginGoToDealPage(BANK1_MAKER1, deal);
+      cy.login(BANK1_MAKER1);
+      cy.visit(contractUrl);
 
       cy.clickAddBondButton();
 
@@ -93,7 +101,7 @@ context('Add a Bond to a Deal', () => {
         const bondId = bondIdHiddenInput[0].value;
 
         cy.clickSaveGoBackButton();
-        cy.url().should('eq', relative(`/contract/${deal._id}`));
+        cy.url().should('eq', contractUrl);
 
         const row = pages.contract.bondTransactionsTable.row(bondId);
 
@@ -157,7 +165,8 @@ context('Add a Bond to a Deal', () => {
     });
 
     it('should display a `completed` status tag for all Bond forms in task list header and a `check your answers` link', () => {
-      cy.loginGoToDealPage(BANK1_MAKER1, deal);
+      cy.login(BANK1_MAKER1);
+      cy.visit(contractUrl);
       cy.addBondToDeal();
       cy.url().should('include', '/check-your-answers');
 
@@ -171,7 +180,8 @@ context('Add a Bond to a Deal', () => {
     });
 
     it('should populate Deal page with the submitted bond, display `Completed` status and link to `Bond Details` page', () => {
-      cy.loginGoToDealPage(BANK1_MAKER1, deal);
+      cy.login(BANK1_MAKER1);
+      cy.visit(contractUrl);
       cy.addBondToDeal();
       cy.url().should('include', '/check-your-answers');
 
@@ -181,7 +191,7 @@ context('Add a Bond to a Deal', () => {
         const bondId = bondIdHiddenInput[0].value;
 
         cy.clickSaveGoBackButton();
-        cy.url().should('eq', relative(`/contract/${deal._id}`));
+        cy.url().should('eq', contractUrl);
 
         const row = pages.contract.bondTransactionsTable.row(bondId);
 
@@ -189,7 +199,7 @@ context('Add a Bond to a Deal', () => {
 
         cy.assertText(row.bondStatus(), 'Completed');
 
-        cy.assertText(row.facilityValue(), `${deal.submissionDetails.supplyContractCurrency.id} ${BOND_FORM_VALUES.FINANCIAL_DETAILS.value}`);
+        cy.assertText(row.facilityValue(), `${MOCK_DEAL.submissionDetails.supplyContractCurrency.id} ${BOND_FORM_VALUES.FINANCIAL_DETAILS.value}`);
 
         cy.assertText(row.facilityStage(), 'Issued');
 
@@ -214,7 +224,8 @@ context('Add a Bond to a Deal', () => {
 
   describe('When a user clicks `save and go back` button in `Bond Preview` page', () => {
     it('should return to Deal page', () => {
-      cy.loginGoToDealPage(BANK1_MAKER1, deal);
+      cy.login(BANK1_MAKER1);
+      cy.visit(contractUrl);
       cy.addBondToDeal();
       cy.url().should('include', '/check-your-answers');
 
diff --git a/e2e-tests/portal/cypress/e2e/journeys/maker-bond/submit-bond-with-created-element.spec.js b/e2e-tests/portal/cypress/e2e/journeys/maker-bond/submit-bond-with-created-element.spec.js
index c7887aa986c..dc1013a91b2 100644
--- a/e2e-tests/portal/cypress/e2e/journeys/maker-bond/submit-bond-with-created-element.spec.js
+++ b/e2e-tests/portal/cypress/e2e/journeys/maker-bond/submit-bond-with-created-element.spec.js
@@ -1,27 +1,18 @@
-const { CURRENCY } = require('@ukef/dtfs2-common');
-const pages = require('../../pages');
 const MOCK_USERS = require('../../../../../e2e-fixtures');
 const fillBondForm = require('./fill-bond-forms');
+const relative = require('../../relativeURL');
 
 const { BANK1_MAKER1, ADMIN } = MOCK_USERS;
 
-const MOCK_DEAL = {
-  bankInternalRefName: 'someDealId',
-  additionalRefName: 'someDealName',
-  submissionDetails: {
-    supplyContractCurrency: {
-      id: CURRENCY.GBP,
-    },
-  },
-};
-
 context('Bond form - Submit bond with created element on page', () => {
-  let deal;
+  let bssDealId;
+  let contractUrl;
 
   beforeEach(() => {
     cy.deleteDeals(ADMIN);
-    cy.insertOneDeal(MOCK_DEAL, BANK1_MAKER1).then((insertedDeal) => {
-      deal = insertedDeal;
+    cy.createBssEwcsDeal().then((dealId) => {
+      bssDealId = dealId;
+      contractUrl = relative(`/contract/${bssDealId}`);
     });
   });
 
@@ -29,7 +20,7 @@ context('Bond form - Submit bond with created element on page', () => {
     cy.login(BANK1_MAKER1);
 
     // navigate to the about-buyer page; use the nav so we have it covered in a test..
-    pages.contract.visit(deal);
+    cy.visit(contractUrl);
 
     cy.clickAddBondButton();
 
@@ -49,10 +40,9 @@ context('Bond form - Submit bond with created element on page', () => {
     cy.clickSubmitButton();
 
     // gets deal
-    cy.getDeal(deal._id, BANK1_MAKER1).then((updatedDeal) => {
-      // get bond from deal facility id
-      cy.getFacility(deal._id, updatedDeal.facilities[0], BANK1_MAKER1).then((bond) => {
-        // checks bond does not contain inserted field
+    cy.getDeal(bssDealId, BANK1_MAKER1).then((updatedDeal) => {
+      cy.getFacility(bssDealId, updatedDeal.facilities[0], BANK1_MAKER1).then((bond) => {
+        // checks bond does not have inserted field
         expect(bond.intruder).to.be.an('undefined');
       });
     });
diff --git a/e2e-tests/portal/cypress/e2e/journeys/maker-loan/loan-guarantee-details.spec.js b/e2e-tests/portal/cypress/e2e/journeys/maker-loan/loan-guarantee-details.spec.js
index 34fd34aec4d..fc207351466 100644
--- a/e2e-tests/portal/cypress/e2e/journeys/maker-loan/loan-guarantee-details.spec.js
+++ b/e2e-tests/portal/cypress/e2e/journeys/maker-loan/loan-guarantee-details.spec.js
@@ -1,25 +1,16 @@
-const { CURRENCY } = require('@ukef/dtfs2-common');
 const pages = require('../../pages');
 const partials = require('../../partials');
 const fillLoanForm = require('./fill-loan-forms');
 const assertLoanFormValues = require('./assert-loan-form-values');
 const LOAN_FORM_VALUES = require('./loan-form-values');
 const MOCK_USERS = require('../../../../../e2e-fixtures');
+const relative = require('../../relativeURL');
 
 const { BANK1_MAKER1, ADMIN } = MOCK_USERS;
 
-const MOCK_DEAL = {
-  bankInternalRefName: 'someDealId',
-  additionalRefName: 'someDealName',
-  submissionDetails: {
-    supplyContractCurrency: {
-      id: CURRENCY.GBP,
-    },
-  },
-};
-
-const goToPage = (deal) => {
-  cy.loginGoToDealPage(BANK1_MAKER1, deal);
+const goToPage = (bssDealId) => {
+  cy.login(BANK1_MAKER1);
+  cy.visit(relative(`/contract/${bssDealId}`));
   cy.clickAddLoanButton();
 };
 
@@ -36,18 +27,18 @@ const assertVisibleCoverEndDateInputs = () => {
 };
 
 context('Loan Guarantee Details', () => {
-  let deal;
+  let bssDealId;
 
   beforeEach(() => {
     cy.deleteDeals(ADMIN);
-    cy.insertOneDeal(MOCK_DEAL, BANK1_MAKER1).then((insertedDeal) => {
-      deal = insertedDeal;
+    cy.createBssEwcsDeal().then((dealId) => {
+      bssDealId = dealId;
     });
   });
 
   describe('Loan Guarantee title', () => {
     it('should contain the correct title', () => {
-      goToPage(deal);
+      goToPage(bssDealId);
 
       pages.loanGuaranteeDetails.title().contains('Loan');
     });
@@ -55,7 +46,7 @@ context('Loan Guarantee Details', () => {
 
   describe('when submitting an empty form', () => {
     it('should progress to `Loan Financial Details` page and after proceeding to `Loan Preview` page, should render Facility stage validation error in `Loan Guarantee Details` page', () => {
-      goToPage(deal);
+      goToPage(bssDealId);
 
       cy.url().should('include', '/contract');
       cy.url().should('include', '/loan/');
@@ -83,7 +74,7 @@ context('Loan Guarantee Details', () => {
 
   describe('when a maker selects different Facility stage options (`Conditional` or `Unconditional`)', () => {
     it('should render additional form fields', () => {
-      goToPage(deal);
+      goToPage(bssDealId);
 
       // Facility stage = Conditional
       pages.loanGuaranteeDetails.facilityStageConditionalInput().click();
@@ -100,7 +91,7 @@ context('Loan Guarantee Details', () => {
 
   describe('when a maker submits Facility stage as `Conditional`', () => {
     it('should render additional form fields and validation errors when returning to the page ', () => {
-      goToPage(deal);
+      goToPage(bssDealId);
 
       pages.loanGuaranteeDetails.facilityStageConditionalInput().click();
       cy.clickSubmitButton();
@@ -119,7 +110,7 @@ context('Loan Guarantee Details', () => {
 
   describe('when a maker submits Facility stage as `Unconditional`', () => {
     it('should render additional form fields and validation errors when returning to the page and render a `Loan’s reference number not entered` link in the Deal page when (optional) Bank Reference Number is not provided', () => {
-      goToPage(deal);
+      goToPage(bssDealId);
 
       pages.loanGuaranteeDetails.facilityStageUnconditionalInput().click();
 
@@ -157,7 +148,7 @@ context('Loan Guarantee Details', () => {
     });
 
     it('should show validation errors when incorrect date inputs and show invalid date on contract page', () => {
-      goToPage(deal);
+      goToPage(bssDealId);
 
       pages.loanGuaranteeDetails.facilityStageUnconditionalInput().click();
 
@@ -235,7 +226,7 @@ context('Loan Guarantee Details', () => {
   });
 
   it('should prepopulate form inputs from submitted data and render a checked checkbox in progress nav', () => {
-    goToPage(deal);
+    goToPage(bssDealId);
 
     // Facility stage = Conditional
     fillLoanForm.guaranteeDetails.facilityStageConditional();
@@ -257,7 +248,7 @@ context('Loan Guarantee Details', () => {
 
   describe('When a maker clicks `save and go back` button', () => {
     it('should save the form data, return to Deal page and prepopulate form fields when returning back to `Loan Guarantee Details` page', () => {
-      goToPage(deal);
+      goToPage(bssDealId);
 
       fillLoanForm.guaranteeDetails.facilityStageUnconditional();
 
diff --git a/e2e-tests/portal/cypress/e2e/journeys/maker-loan/loan.spec.js b/e2e-tests/portal/cypress/e2e/journeys/maker-loan/loan.spec.js
index c3a655022a2..5b872ee53d7 100644
--- a/e2e-tests/portal/cypress/e2e/journeys/maker-loan/loan.spec.js
+++ b/e2e-tests/portal/cypress/e2e/journeys/maker-loan/loan.spec.js
@@ -21,13 +21,20 @@ const MOCK_DEAL = {
 };
 
 context('Add a Loan to a Deal', () => {
-  let deal;
+  let bssDealId;
+  let contractUrl;
 
   beforeEach(() => {
     cy.deleteDeals(ADMIN);
-    cy.insertOneDeal(MOCK_DEAL, BANK1_MAKER1).then((insertedDeal) => {
-      deal = insertedDeal;
+    cy.createBssEwcsDeal(MOCK_DEAL).then((dealId) => {
+      bssDealId = dealId;
+      contractUrl = relative(`/contract/${bssDealId}`);
     });
+    cy.completeAboutSupplierSection({
+      exporterCompanyName: 'Exporter Company Name',
+    });
+    cy.completeAboutBuyerSection();
+    cy.completeAboutFinancialSection();
   });
 
   it('should allow a user to create a Deal, pass Red Line and add a Loan to the deal', () => {
@@ -67,7 +74,8 @@ context('Add a Loan to a Deal', () => {
   });
 
   it('should populate Deal page with the submitted loan, with `Completed` status and link to `Loan Guarantee Details` page', () => {
-    cy.loginGoToDealPage(BANK1_MAKER1, deal);
+    cy.login(BANK1_MAKER1);
+    cy.visit(contractUrl);
     cy.clickAddLoanButton();
     fillLoanForm.unconditionalWithCurrencySameAsSupplyContractCurrency();
     fillLoanForm.datesRepayments.inAdvanceAnnually();
@@ -79,7 +87,7 @@ context('Add a Loan to a Deal', () => {
       const loanId = loanIdHiddenInput[0].value;
 
       cy.clickSaveGoBackButton();
-      cy.url().should('eq', relative(`/contract/${deal._id}`));
+      cy.url().should('eq', contractUrl);
 
       const row = pages.contract.loansTransactionsTable.row(loanId);
 
@@ -87,7 +95,7 @@ context('Add a Loan to a Deal', () => {
 
       cy.assertText(row.loanStatus(), 'Completed');
 
-      cy.assertText(row.facilityValue(), `${deal.submissionDetails.supplyContractCurrency.id} ${LOAN_FORM_VALUES.FINANCIAL_DETAILS.value}`);
+      cy.assertText(row.facilityValue(), `${MOCK_DEAL.submissionDetails.supplyContractCurrency.id} ${LOAN_FORM_VALUES.FINANCIAL_DETAILS.value}`);
 
       cy.assertText(row.facilityStage(), 'Unconditional');
 
@@ -105,7 +113,8 @@ context('Add a Loan to a Deal', () => {
 
   describe('when a user submits Loan forms without completing required fields', () => {
     it('loan should display all validation errors in `Loan Preview` page and `Incomplete` status in Deal page', () => {
-      cy.loginGoToDealPage(BANK1_MAKER1, deal);
+      cy.login(BANK1_MAKER1);
+      cy.visit(contractUrl);
       cy.clickAddLoanButton();
 
       cy.clickSubmitButton();
diff --git a/e2e-tests/portal/cypress/e2e/journeys/maker-loan/submit-loan-with-created-elements.spec.js b/e2e-tests/portal/cypress/e2e/journeys/maker-loan/submit-loan-with-created-elements.spec.js
index 15406bc4167..817bdfe79d5 100644
--- a/e2e-tests/portal/cypress/e2e/journeys/maker-loan/submit-loan-with-created-elements.spec.js
+++ b/e2e-tests/portal/cypress/e2e/journeys/maker-loan/submit-loan-with-created-elements.spec.js
@@ -1,28 +1,20 @@
-const { CURRENCY } = require('@ukef/dtfs2-common');
 const pages = require('../../pages');
 const MOCK_USERS = require('../../../../../e2e-fixtures');
 const fillLoanForm = require('./fill-loan-forms');
 const LOAN_FORM_VALUES = require('./loan-form-values');
+const relative = require('../../relativeURL');
 
 const { BANK1_MAKER1, ADMIN } = MOCK_USERS;
 
-const MOCK_DEAL = {
-  bankInternalRefName: 'someDealId',
-  additionalRefName: 'someDealName',
-  submissionDetails: {
-    supplyContractCurrency: {
-      id: CURRENCY.GBP,
-    },
-  },
-};
-
 context('Loan form - Submit loan with created element on page', () => {
-  let deal;
+  let bssDealId;
+  let contractUrl;
 
   beforeEach(() => {
     cy.deleteDeals(ADMIN);
-    cy.insertOneDeal(MOCK_DEAL, BANK1_MAKER1).then((insertedDeal) => {
-      deal = insertedDeal;
+    cy.createBssEwcsDeal().then((dealId) => {
+      bssDealId = dealId;
+      contractUrl = relative(`/contract/${bssDealId}`);
     });
   });
 
@@ -30,7 +22,7 @@ context('Loan form - Submit loan with created element on page', () => {
     cy.login(BANK1_MAKER1);
 
     // navigate to the about-buyer page; use the nav so we have it covered in a test..
-    pages.contract.visit(deal);
+    cy.visit(contractUrl);
 
     cy.clickAddLoanButton();
 
@@ -78,9 +70,8 @@ context('Loan form - Submit loan with created element on page', () => {
     cy.clickSubmitButton();
 
     // gets deal
-    cy.getDeal(deal._id, BANK1_MAKER1).then((updatedDeal) => {
-      // gets facilityId from deal
-      cy.getFacility(deal._id, updatedDeal.facilities[0], BANK1_MAKER1).then((loan) => {
+    cy.getDeal(bssDealId, BANK1_MAKER1).then((updatedDeal) => {
+      cy.getFacility(bssDealId, updatedDeal.facilities[0], BANK1_MAKER1).then((loan) => {
         // checks loan does not have inserted field
         expect(loan.intruder).to.be.an('undefined');
       });
diff --git a/e2e-tests/portal/cypress/support/commands.js b/e2e-tests/portal/cypress/support/commands.js
index 732c4ecace0..9c046b813d3 100644
--- a/e2e-tests/portal/cypress/support/commands.js
+++ b/e2e-tests/portal/cypress/support/commands.js
@@ -1,6 +1,9 @@
 import 'cypress-file-upload';
 import * as api from '../../../gef/cypress/support/commands/api';
 import * as createBssEwcsDealandFillDealFields from './portal/createBssEwcsDeal';
+import { completeAboutSupplierSection } from './portal/completeAboutSupplierSection';
+import { completeAboutBuyerSection } from './portal/completeAboutBuyerSection';
+import { completeAboutFinancialSection } from './portal/completeAboutFinancialSection';
 import { assertPrintDialogue } from './utils/assertPrintDialogue';
 
 const { downloadFile } = require('./portal-api/fileshare');
@@ -87,6 +90,9 @@ Cypress.Commands.add('assertValidationErrorTableRowContains', require('./portal/
 
 Cypress.Commands.add('createBssEwcsDeal', createBssEwcsDealandFillDealFields.createBssEwcsDeal);
 Cypress.Commands.add('completeBssEwcsDealFields', createBssEwcsDealandFillDealFields.completeBssEwcsDealFields);
+Cypress.Commands.add('completeAboutSupplierSection', completeAboutSupplierSection);
+Cypress.Commands.add('completeAboutBuyerSection', completeAboutBuyerSection);
+Cypress.Commands.add('completeAboutFinancialSection', completeAboutFinancialSection);
 
 Cypress.Commands.add('getDealIdFromUrl', require('./portal/getDealIdFromUrl'));
 
diff --git a/e2e-tests/portal/cypress/support/portal/completeAboutBuyerSection.js b/e2e-tests/portal/cypress/support/portal/completeAboutBuyerSection.js
new file mode 100644
index 00000000000..6f50127ac3f
--- /dev/null
+++ b/e2e-tests/portal/cypress/support/portal/completeAboutBuyerSection.js
@@ -0,0 +1,11 @@
+const { fillBuyerDetails } = require('./createBssEwcsDeal');
+/**
+ * Completes the 'About Buyer' section of a form.
+ *
+ * @description Calls the `fillBuyerDetails` function to populate the section with buyer details.
+ */
+const completeAboutBuyerSection = () => {
+  fillBuyerDetails();
+};
+
+export { completeAboutBuyerSection };
diff --git a/e2e-tests/portal/cypress/support/portal/completeAboutFinancialSection.js b/e2e-tests/portal/cypress/support/portal/completeAboutFinancialSection.js
new file mode 100644
index 00000000000..9b5ad40b81c
--- /dev/null
+++ b/e2e-tests/portal/cypress/support/portal/completeAboutFinancialSection.js
@@ -0,0 +1,11 @@
+const { fillFinancialDetails } = require('./createBssEwcsDeal');
+/**
+ * Completes the final section of a form.
+ *
+ * @description Calls the `fillFinancialDetails` function to populate the section with financial details.
+ */
+const completeAboutFinancialSection = () => {
+  fillFinancialDetails();
+};
+
+export { completeAboutFinancialSection };
diff --git a/e2e-tests/portal/cypress/support/portal/completeAboutSupplierSection.js b/e2e-tests/portal/cypress/support/portal/completeAboutSupplierSection.js
new file mode 100644
index 00000000000..2c9049380ec
--- /dev/null
+++ b/e2e-tests/portal/cypress/support/portal/completeAboutSupplierSection.js
@@ -0,0 +1,14 @@
+const { fillSupplierDetails } = require('./createBssEwcsDeal');
+/**
+ * Completes the 'About Supplier' section of a form.
+ *
+ * @param {Object} params - Parameters for completing the section.
+ * @param {string} params.exporterCompanyName - The name of the exporting company.
+ *
+ * @description Calls the `fillSupplierDetails` function to populate the section with supplier details.
+ */
+const completeAboutSupplierSection = ({ exporterCompanyName }) => {
+  fillSupplierDetails(exporterCompanyName);
+};
+
+export { completeAboutSupplierSection };
diff --git a/e2e-tests/portal/cypress/support/portal/createBssEwcsDeal.js b/e2e-tests/portal/cypress/support/portal/createBssEwcsDeal.js
index dcdff3c81c5..68e0073cc12 100644
--- a/e2e-tests/portal/cypress/support/portal/createBssEwcsDeal.js
+++ b/e2e-tests/portal/cypress/support/portal/createBssEwcsDeal.js
@@ -291,4 +291,4 @@ const completeBssEwcsDealFields = ({ dealSubmissionType, facilityStage, exporter
   fillOutDealDetails({ dealSubmissionType, facilityStage, exporterCompanyName });
 };
 
-export { createBssEwcsDeal, completeBssEwcsDealFields };
+export { createBssEwcsDeal, completeBssEwcsDealFields, fillSupplierDetails, fillBuyerDetails, fillFinancialDetails };


Reviews:
user: login: zainUKEF
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-27T09:29:32Z
user: login: zainUKEF
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-27T09:31:51Z
user: login: zainUKEF
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-27T09:32:12Z
user: login: zainUKEF
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-27T09:32:30Z
user: login: zainUKEF
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-27T09:32:56Z
user: login: zainUKEF
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-27T09:33:15Z
user: login: zainUKEF
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-27T09:33:42Z
user: login: vamshidharukef
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-27T13:11:38Z
user: login: vamshidharukef
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-27T13:13:03Z
user: login: vamshidharukef
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-27T13:24:46Z
user: login: vamshidharukef
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-27T13:24:57Z
user: login: vamshidharukef
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-27T13:25:07Z
user: login: vamshidharukef
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-27T13:25:33Z
user: login: vamshidharukef
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-27T13:25:47Z
user: login: zainUKEF
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-27T14:20:20Z
user: login: zainUKEF
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-27T14:21:14Z
user: login: zainUKEF
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-27T14:23:36Z
user: login: vamshidharukef
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-27T17:56:14Z
user: login: vamshidharukef
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-27T17:56:33Z
user: login: vamshidharukef
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-27T17:56:45Z
user: login: zainUKEF
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-28T10:13:54Z
user: login: zainUKEF
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-31T09:00:15Z
user: login: vamshidharukef
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-31T09:47:50Z
user: login: zainUKEF
state: DISMISSED
author_association: CONTRIBUTOR
submitted_at: 2025-03-31T10:12:49Z
user: login: zainUKEF
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-31T17:25:01Z
user: login: vamshidharukef
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-01T09:32:03Z
user: login: zainUKEF
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-01T12:27:22Z
user: login: vamshidharukef
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-01T13:28:57Z
user: login: zainUKEF
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-04-01T13:34:04Z

Review comments:
diff_hunk: @@ -64,9 +47,11 @@ context('Supply contract form - create element and check if inserted into deal',
 
     contractAboutSupplier.nextPage().click();
 
-    cy.getDeal(deal._id, BANK1_MAKER1).then((updatedDeal) => {
-      // ensure the updated deal does not contain additional intruder field
-      expect(updatedDeal.submissionDetails.intruder).to.be.an('undefined');
+    cy.getDealIdFromUrl(4).then((id) => {
path: e2e-tests/portal/cypress/e2e/journeys/maker-about-supply-contract/fill-in-supply-contract-create-element.spec.js
user: login: zainUKEF
body: do we not already have the dealId?
created_at: 2025-03-27T09:29:32Z
author_association: CONTRIBUTOR
diff_hunk: @@ -174,7 +165,8 @@ context('Bond Details', () => {
 
   describe('When a user selects `unissued` facility stage', () => {
     beforeEach(() => {
-      cy.loginGoToDealPage(BANK1_MAKER1, deal);
+      cy.login(BANK1_MAKER1);
+      cy.visit(relative(`/contract/${bssDealId}`));
path: e2e-tests/portal/cypress/e2e/journeys/maker-bond/bond-details.spec.js
user: login: zainUKEF
body: const
created_at: 2025-03-27T09:31:51Z
author_association: CONTRIBUTOR
diff_hunk: @@ -97,7 +89,8 @@ context('Bond Financial Details', () => {
 
   describe('when changing the `bond value` or `covered percentage` field', () => {
     it('should dynamically update the `UKEF exposure` value on blur', () => {
-      cy.loginGoToDealPage(BANK1_MAKER1, deal);
+      cy.login(BANK1_MAKER1);
+      cy.visit(relative(`/contract/${bssDealId}`));
path: e2e-tests/portal/cypress/e2e/journeys/maker-bond/bond-financial-details.spec.js
user: login: zainUKEF
body: const
created_at: 2025-03-27T09:32:12Z
author_association: CONTRIBUTOR
diff_hunk: @@ -14,18 +13,18 @@ const MOCK_DEAL = {
   additionalRefName: 'someDealName',
   submissionDetails: {
     supplyContractCurrency: {
-      id: CURRENCY.GBP,
+      id: '',
path: e2e-tests/portal/cypress/e2e/journeys/maker-bond/bond.spec.js
user: login: zainUKEF
body: why has this been removed?
created_at: 2025-03-27T09:32:30Z
author_association: CONTRIBUTOR
diff_hunk: @@ -181,15 +183,23 @@ context('Add a Bond to a Deal', () => {
         const bondId = bondIdHiddenInput[0].value;
 
         cy.clickSaveGoBackButton();
-        cy.url().should('eq', relative(`/contract/${deal._id}`));
+        cy.url().should('eq', relative(`/contract/${bssDealId}`));
 
         const row = pages.contract.bondTransactionsTable.row(bondId);
 
         cy.assertText(row.uniqueNumberLink(), BOND_FORM_VALUES.DETAILS.name);
 
         cy.assertText(row.bondStatus(), 'Completed');
 
-        cy.assertText(row.facilityValue(), `${deal.submissionDetails.supplyContractCurrency.id} ${BOND_FORM_VALUES.FINANCIAL_DETAILS.value}`);
+        // cy.assertText(row.facilityValue(), `${MOCK_DEAL.submissionDetails.supplyContractCurrency.id} ${BOND_FORM_VALUES.FINANCIAL_DETAILS.value}`);
path: e2e-tests/portal/cypress/e2e/journeys/maker-bond/bond.spec.js
user: login: zainUKEF
body: why has this been changed?
created_at: 2025-03-27T09:32:56Z
author_association: CONTRIBUTOR
diff_hunk: @@ -49,11 +38,12 @@ context('Bond form - Submit bond with created element on page', () => {
     cy.clickSubmitButton();
 
     // gets deal
-    cy.getDeal(deal._id, BANK1_MAKER1).then((updatedDeal) => {
-      // get bond from deal facility id
-      cy.getFacility(deal._id, updatedDeal.facilities[0], BANK1_MAKER1).then((bond) => {
-        // checks bond does not contain inserted field
-        expect(bond.intruder).to.be.an('undefined');
+    cy.getDealIdFromUrl(4).then((id) => {
path: e2e-tests/portal/cypress/e2e/journeys/maker-bond/submit-bond-with-created-element.spec.js
user: login: zainUKEF
body: you already have the id?
created_at: 2025-03-27T09:33:14Z
author_association: CONTRIBUTOR
diff_hunk: @@ -78,11 +68,12 @@ context('Loan form - Submit loan with created element on page', () => {
     cy.clickSubmitButton();
 
     // gets deal
-    cy.getDeal(deal._id, BANK1_MAKER1).then((updatedDeal) => {
-      // gets facilityId from deal
-      cy.getFacility(deal._id, updatedDeal.facilities[0], BANK1_MAKER1).then((loan) => {
-        // checks loan does not have inserted field
-        expect(loan.intruder).to.be.an('undefined');
+    cy.getDealIdFromUrl(4).then((id) => {
path: e2e-tests/portal/cypress/e2e/journeys/maker-loan/submit-loan-with-created-elements.spec.js
user: login: zainUKEF
body: you already have the id?
created_at: 2025-03-27T09:33:42Z
author_association: CONTRIBUTOR
diff_hunk: @@ -14,18 +13,18 @@ const MOCK_DEAL = {
   additionalRefName: 'someDealName',
   submissionDetails: {
     supplyContractCurrency: {
-      id: CURRENCY.GBP,
+      id: '',
path: e2e-tests/portal/cypress/e2e/journeys/maker-bond/bond.spec.js
user: login: vamshidharukef
body: The test returns expected '123456' to equal '123456'. If currency is used then it appends as GB 123456 and the test fails.
created_at: 2025-03-27T13:11:37Z
author_association: CONTRIBUTOR
diff_hunk: @@ -181,15 +183,23 @@ context('Add a Bond to a Deal', () => {
         const bondId = bondIdHiddenInput[0].value;
 
         cy.clickSaveGoBackButton();
-        cy.url().should('eq', relative(`/contract/${deal._id}`));
+        cy.url().should('eq', relative(`/contract/${bssDealId}`));
 
         const row = pages.contract.bondTransactionsTable.row(bondId);
 
         cy.assertText(row.uniqueNumberLink(), BOND_FORM_VALUES.DETAILS.name);
 
         cy.assertText(row.bondStatus(), 'Completed');
 
-        cy.assertText(row.facilityValue(), `${deal.submissionDetails.supplyContractCurrency.id} ${BOND_FORM_VALUES.FINANCIAL_DETAILS.value}`);
+        // cy.assertText(row.facilityValue(), `${MOCK_DEAL.submissionDetails.supplyContractCurrency.id} ${BOND_FORM_VALUES.FINANCIAL_DETAILS.value}`);
path: e2e-tests/portal/cypress/e2e/journeys/maker-bond/bond.spec.js
user: login: vamshidharukef
body: As the test returns with currency this is changed.
created_at: 2025-03-27T13:13:02Z
author_association: CONTRIBUTOR
diff_hunk: @@ -64,9 +47,11 @@ context('Supply contract form - create element and check if inserted into deal',
 
     contractAboutSupplier.nextPage().click();
 
-    cy.getDeal(deal._id, BANK1_MAKER1).then((updatedDeal) => {
-      // ensure the updated deal does not contain additional intruder field
-      expect(updatedDeal.submissionDetails.intruder).to.be.an('undefined');
+    cy.getDealIdFromUrl(4).then((id) => {
path: e2e-tests/portal/cypress/e2e/journeys/maker-about-supply-contract/fill-in-supply-contract-create-element.spec.js
user: login: vamshidharukef
body: Yes, reverted back.
created_at: 2025-03-27T13:24:45Z
author_association: CONTRIBUTOR
diff_hunk: @@ -174,7 +165,8 @@ context('Bond Details', () => {
 
   describe('When a user selects `unissued` facility stage', () => {
     beforeEach(() => {
-      cy.loginGoToDealPage(BANK1_MAKER1, deal);
+      cy.login(BANK1_MAKER1);
+      cy.visit(relative(`/contract/${bssDealId}`));
path: e2e-tests/portal/cypress/e2e/journeys/maker-bond/bond-details.spec.js
user: login: vamshidharukef
body: Done
created_at: 2025-03-27T13:24:56Z
author_association: CONTRIBUTOR
diff_hunk: @@ -97,7 +89,8 @@ context('Bond Financial Details', () => {
 
   describe('when changing the `bond value` or `covered percentage` field', () => {
     it('should dynamically update the `UKEF exposure` value on blur', () => {
-      cy.loginGoToDealPage(BANK1_MAKER1, deal);
+      cy.login(BANK1_MAKER1);
+      cy.visit(relative(`/contract/${bssDealId}`));
path: e2e-tests/portal/cypress/e2e/journeys/maker-bond/bond-financial-details.spec.js
user: login: vamshidharukef
body: Done
created_at: 2025-03-27T13:25:06Z
author_association: CONTRIBUTOR
diff_hunk: @@ -49,11 +38,12 @@ context('Bond form - Submit bond with created element on page', () => {
     cy.clickSubmitButton();
 
     // gets deal
-    cy.getDeal(deal._id, BANK1_MAKER1).then((updatedDeal) => {
-      // get bond from deal facility id
-      cy.getFacility(deal._id, updatedDeal.facilities[0], BANK1_MAKER1).then((bond) => {
-        // checks bond does not contain inserted field
-        expect(bond.intruder).to.be.an('undefined');
+    cy.getDealIdFromUrl(4).then((id) => {
path: e2e-tests/portal/cypress/e2e/journeys/maker-bond/submit-bond-with-created-element.spec.js
user: login: vamshidharukef
body: Yes, reverted back
created_at: 2025-03-27T13:25:32Z
author_association: CONTRIBUTOR
diff_hunk: @@ -78,11 +68,12 @@ context('Loan form - Submit loan with created element on page', () => {
     cy.clickSubmitButton();
 
     // gets deal
-    cy.getDeal(deal._id, BANK1_MAKER1).then((updatedDeal) => {
-      // gets facilityId from deal
-      cy.getFacility(deal._id, updatedDeal.facilities[0], BANK1_MAKER1).then((loan) => {
-        // checks loan does not have inserted field
-        expect(loan.intruder).to.be.an('undefined');
+    cy.getDealIdFromUrl(4).then((id) => {
path: e2e-tests/portal/cypress/e2e/journeys/maker-loan/submit-loan-with-created-elements.spec.js
user: login: vamshidharukef
body: yes, reverted back
created_at: 2025-03-27T13:25:46Z
author_association: CONTRIBUTOR
diff_hunk: @@ -14,18 +13,18 @@ const MOCK_DEAL = {
   additionalRefName: 'someDealName',
   submissionDetails: {
     supplyContractCurrency: {
-      id: CURRENCY.GBP,
+      id: '',
path: e2e-tests/portal/cypress/e2e/journeys/maker-bond/bond.spec.js
user: login: zainUKEF
body: it seems the currency is not being added then.  Please can you find a way to add the currency
created_at: 2025-03-27T14:20:20Z
author_association: CONTRIBUTOR
diff_hunk: @@ -181,15 +185,21 @@ context('Add a Bond to a Deal', () => {
         const bondId = bondIdHiddenInput[0].value;
 
         cy.clickSaveGoBackButton();
-        cy.url().should('eq', relative(`/contract/${deal._id}`));
+        cy.url().should('eq', contractUrl);
 
         const row = pages.contract.bondTransactionsTable.row(bondId);
 
         cy.assertText(row.uniqueNumberLink(), BOND_FORM_VALUES.DETAILS.name);
 
         cy.assertText(row.bondStatus(), 'Completed');
 
-        cy.assertText(row.facilityValue(), `${deal.submissionDetails.supplyContractCurrency.id} ${BOND_FORM_VALUES.FINANCIAL_DETAILS.value}`);
+        row
path: e2e-tests/portal/cypress/e2e/journeys/maker-bond/bond.spec.js
user: login: zainUKEF
body: please revert this
created_at: 2025-03-27T14:21:14Z
author_association: CONTRIBUTOR
path: e2e-tests/portal/cypress/e2e/journeys/maker-loan/loan.spec.js
user: login: zainUKEF
body: please revert this like bond.spec.js
created_at: 2025-03-27T14:23:36Z
author_association: CONTRIBUTOR
diff_hunk: @@ -14,18 +13,18 @@ const MOCK_DEAL = {
   additionalRefName: 'someDealName',
   submissionDetails: {
     supplyContractCurrency: {
-      id: CURRENCY.GBP,
+      id: '',
path: e2e-tests/portal/cypress/e2e/journeys/maker-bond/bond.spec.js
user: login: vamshidharukef
body: Added a condition to createBssEwcsDeal function
created_at: 2025-03-27T17:56:13Z
author_association: CONTRIBUTOR
diff_hunk: @@ -181,15 +185,21 @@ context('Add a Bond to a Deal', () => {
         const bondId = bondIdHiddenInput[0].value;
 
         cy.clickSaveGoBackButton();
-        cy.url().should('eq', relative(`/contract/${deal._id}`));
+        cy.url().should('eq', contractUrl);
 
         const row = pages.contract.bondTransactionsTable.row(bondId);
 
         cy.assertText(row.uniqueNumberLink(), BOND_FORM_VALUES.DETAILS.name);
 
         cy.assertText(row.bondStatus(), 'Completed');
 
-        cy.assertText(row.facilityValue(), `${deal.submissionDetails.supplyContractCurrency.id} ${BOND_FORM_VALUES.FINANCIAL_DETAILS.value}`);
+        row
path: e2e-tests/portal/cypress/e2e/journeys/maker-bond/bond.spec.js
user: login: vamshidharukef
body: Done
created_at: 2025-03-27T17:56:32Z
author_association: CONTRIBUTOR
path: e2e-tests/portal/cypress/e2e/journeys/maker-loan/loan.spec.js
user: login: vamshidharukef
body: Done
created_at: 2025-03-27T17:56:44Z
author_association: CONTRIBUTOR
diff_hunk: @@ -270,14 +270,23 @@ const fillOutDealDetails = ({ dealSubmissionType, facilityStage, exporterCompany
 /**
  * Initiates the creation of a BSS/EWCS deal via the UI.
  * This includes logging in, starting a new submission, and filling bank details.
+ * @param {object} [mockDeal] - Optional mock deal data to use instead of creating a new deal from scratch.
  * @returns {string} The deal ID of the created deal.
  */
-const createBssEwcsDeal = () => {
-  cy.login(BANK1_MAKER1);
-  startNewSubmission();
-  fillBankDetails();
-  // Return DealId from URL
-  cy.getDealIdFromUrl(4).then((dealId) => dealId);
+const createBssEwcsDeal = (mockDeal = null) => {
+  if (mockDeal) {
+    // Use the mock deal object to create the deal
+    cy.insertOneDeal(mockDeal, BANK1_MAKER1).then((insertedDeal) => {
+      return insertedDeal._id;
path: e2e-tests/portal/cypress/support/portal/createBssEwcsDeal.js
user: login: zainUKEF
body: this should not be added here, if the test is failing on currency then the application has to be filled out in a way where the currency is populated
created_at: 2025-03-28T10:13:54Z
author_association: CONTRIBUTOR
diff_hunk: @@ -157,7 +160,8 @@ context('Add a Bond to a Deal', () => {
     });
 
     it('should display a `completed` status tag for all Bond forms in task list header and a `check your answers` link', () => {
-      cy.loginGoToDealPage(BANK1_MAKER1, deal);
+      cy.login(BANK1_MAKER1);
+      cy.visit(relative(`/contract/${bssDealId}`));
path: e2e-tests/portal/cypress/e2e/journeys/maker-bond/bond.spec.js
user: login: zainUKEF
body: this needs to be changed
created_at: 2025-03-31T09:00:15Z
author_association: CONTRIBUTOR
diff_hunk: @@ -157,7 +160,8 @@ context('Add a Bond to a Deal', () => {
     });
 
     it('should display a `completed` status tag for all Bond forms in task list header and a `check your answers` link', () => {
-      cy.loginGoToDealPage(BANK1_MAKER1, deal);
+      cy.login(BANK1_MAKER1);
+      cy.visit(relative(`/contract/${bssDealId}`));
path: e2e-tests/portal/cypress/e2e/journeys/maker-bond/bond.spec.js
user: login: vamshidharukef
body: Done
created_at: 2025-03-31T09:47:49Z
author_association: CONTRIBUTOR
diff_hunk: @@ -280,6 +280,22 @@ const createBssEwcsDeal = () => {
   cy.getDealIdFromUrl(4).then((dealId) => dealId);
 };
 
+/**
+ * Simulates incomplete financial details submission in the contract workflow.
+ *
+ * This function clicks through the supplier details, buyer details, and financial details pages,
+ * selecting 'GBP' as the supply contract currency, and saves the changes.
+ *
+ * @description This function is used to test the contract workflow with incomplete financial details.
+ */
+const inCompleteFinancialDetails = () => {
path: e2e-tests/portal/cypress/support/portal/createBssEwcsDeal.js
user: login: zainUKEF
body: this could be its own file.  something like submit-incomplete-financial-details and change function name too
created_at: 2025-03-31T17:25:01Z
author_association: CONTRIBUTOR
diff_hunk: @@ -280,6 +280,22 @@ const createBssEwcsDeal = () => {
   cy.getDealIdFromUrl(4).then((dealId) => dealId);
 };
 
+/**
+ * Simulates incomplete financial details submission in the contract workflow.
+ *
+ * This function clicks through the supplier details, buyer details, and financial details pages,
+ * selecting 'GBP' as the supply contract currency, and saves the changes.
+ *
+ * @description This function is used to test the contract workflow with incomplete financial details.
+ */
+const inCompleteFinancialDetails = () => {
path: e2e-tests/portal/cypress/support/portal/createBssEwcsDeal.js
user: login: vamshidharukef
body: Added function for each section.
created_at: 2025-04-01T09:32:02Z
author_association: CONTRIBUTOR
diff_hunk: @@ -280,6 +280,36 @@ const createBssEwcsDeal = () => {
   cy.getDealIdFromUrl(4).then((dealId) => dealId);
 };
 
+/**
+ * Completes the 'About Supplier' section of a form.
+ *
+ * @param {Object} params - Parameters for completing the section.
+ * @param {string} params.exporterCompanyName - The name of the exporting company.
+ *
+ * @description Calls the `fillSupplierDetails` function to populate the section with supplier details.
+ */
+const completeAboutSupplierSection = ({ exporterCompanyName }) => {
+  fillSupplierDetails(exporterCompanyName);
+};
+
+/**
+ * Completes the 'About Buyer' section of a form.
+ *
+ * @description Calls the `fillBuyerDetails` function to populate the section with buyer details.
+ */
+const completeAboutBuyerSection = () => {
+  fillBuyerDetails();
+};
+
+/**
+ * Completes the final section of a form.
+ *
+ * @description Calls the `fillFinancialDetails` function to populate the section with financial details.
+ */
+const completeAboutFinancialSection = () => {
+  fillFinancialDetails();
+};
path: e2e-tests/portal/cypress/support/portal/createBssEwcsDeal.js
user: login: zainUKEF
body: these should be in a different file
created_at: 2025-04-01T12:27:21Z
author_association: CONTRIBUTOR
diff_hunk: @@ -280,6 +280,36 @@ const createBssEwcsDeal = () => {
   cy.getDealIdFromUrl(4).then((dealId) => dealId);
 };
 
+/**
+ * Completes the 'About Supplier' section of a form.
+ *
+ * @param {Object} params - Parameters for completing the section.
+ * @param {string} params.exporterCompanyName - The name of the exporting company.
+ *
+ * @description Calls the `fillSupplierDetails` function to populate the section with supplier details.
+ */
+const completeAboutSupplierSection = ({ exporterCompanyName }) => {
+  fillSupplierDetails(exporterCompanyName);
+};
+
+/**
+ * Completes the 'About Buyer' section of a form.
+ *
+ * @description Calls the `fillBuyerDetails` function to populate the section with buyer details.
+ */
+const completeAboutBuyerSection = () => {
+  fillBuyerDetails();
+};
+
+/**
+ * Completes the final section of a form.
+ *
+ * @description Calls the `fillFinancialDetails` function to populate the section with financial details.
+ */
+const completeAboutFinancialSection = () => {
+  fillFinancialDetails();
+};
path: e2e-tests/portal/cypress/support/portal/createBssEwcsDeal.js
user: login: vamshidharukef
body: Done
created_at: 2025-04-01T13:28:57Z
author_association: CONTRIBUTOR

PR comments:
user: login: sonarqubecloud[bot]
created_at: 2025-04-01T18:46:13Z
body: ## [![Quality Gate Passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-passed-20px.png 'Quality Gate Passed')](https://sonarcloud.io/dashboard?id=UK-Export-Finance_dtfs2&pullRequest=4280) **Quality Gate passed**  
Issues  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 New issues](https://sonarcloud.io/project/issues?id=UK-Export-Finance_dtfs2&pullRequest=4280&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/accepted-16px.png '') [0 Accepted issues](https://sonarcloud.io/project/issues?id=UK-Export-Finance_dtfs2&pullRequest=4280&issueStatuses=ACCEPTED)

Measures  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=UK-Export-Finance_dtfs2&pullRequest=4280&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=UK-Export-Finance_dtfs2&pullRequest=4280&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=UK-Export-Finance_dtfs2&pullRequest=4280&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=UK-Export-Finance_dtfs2&pullRequest=4280)


author_association: NONE