From 780498ee9f57a97a9558aaf63c7b24434aed24ea Mon Sep 17 00:00:00 2001 From: Kamen Bachvarov Date: Wed, 18 Mar 2026 12:03:05 +0000 Subject: [PATCH 1/5] add files smoke test --- .../add_scanned_paper_notes.cy.js | 139 ++++++++++++++++++ .../active-patient-h81109.json | 6 +- .../fixtures/lg-files/simple_pages/6.pdf | Bin 0 -> 13541 bytes .../fixtures/lg-files/simple_pages/7.pdf | Bin 0 -> 13389 bytes 4 files changed, 143 insertions(+), 2 deletions(-) create mode 100644 app/cypress/e2e/1-ndr-smoke-tests/gp_user_workflows/add_scanned_paper_notes.cy.js create mode 100644 app/cypress/fixtures/lg-files/simple_pages/6.pdf create mode 100644 app/cypress/fixtures/lg-files/simple_pages/7.pdf diff --git a/app/cypress/e2e/1-ndr-smoke-tests/gp_user_workflows/add_scanned_paper_notes.cy.js b/app/cypress/e2e/1-ndr-smoke-tests/gp_user_workflows/add_scanned_paper_notes.cy.js new file mode 100644 index 0000000000..43b409ef5f --- /dev/null +++ b/app/cypress/e2e/1-ndr-smoke-tests/gp_user_workflows/add_scanned_paper_notes.cy.js @@ -0,0 +1,139 @@ +import { pdsPatients } from '../../../support/patients'; +import dbItem from '../../../fixtures/dynamo-db-items/active-patient-h81109.json'; +import { Roles } from '../../../support/roles'; + +const workspace = Cypress.env('WORKSPACE'); +const lgTableName = `${workspace}_LloydGeorgeReferenceMetadata`; +const bucketName = `${workspace}-lloyd-george-store`; +const activePatient = pdsPatients.activeUpload; +const filePath = `${activePatient}/c165a49e-71b3-4662-8494-49c6b08070ba`; + +const patientVerifyUrl = '/patient/verify'; +const lloydGeorgeRecordUrl = '/patient/documents'; +const selectOrderUrl = '/patient/document-upload/select-order'; +const confirmationUrl = '/patient/document-upload/confirmation'; + +dbItem.FileLocation = dbItem.FileLocation.replace('{env}', workspace); + +const uploadedFilePathNames = [ + 'cypress/fixtures/lg-files/simple_pages/6.pdf', + 'cypress/fixtures/lg-files/simple_pages/7.pdf', +]; +const uploadedFileNames = ['6', '7']; + +describe('GP Workflow: Add Lloyd George record', () => { + context('Add a Lloyd George document', () => { + beforeEach(() => { + cy.addPdfFileToS3(bucketName, filePath, 'test_patient_record.pdf'); + cy.addItemToDynamoDb(lgTableName, dbItem); + }); + + afterEach(() => { + //clean up any records present for the active patient + cy.deleteItemsBySecondaryKeyFromDynamoDb( + lgTableName, + 'NhsNumberIndex', + 'NhsNumber', + activePatient.toString(), + ); + uploadedFileNames.forEach((file) => { + cy.deleteFileFromS3(bucketName, file); + }); + }); + + it( + '[Smoke] GP ADMIN can add additional scanned paper notes on top of existing ones and order is correct', + { tags: 'smoke', defaultCommandTimeout: 20000 }, + () => { + cy.smokeLogin(Roles.SMOKE_GP_ADMIN); + cy.navigateToPatientSearchPage(); + + cy.get('#nhs-number-input').should('exist'); + cy.get('#nhs-number-input').click(); + cy.get('#nhs-number-input').type(activePatient); + cy.getByTestId('search-submit-btn').should('exist'); + cy.getByTestId('search-submit-btn').click(); + cy.url({ timeout: 15000 }).should('contain', patientVerifyUrl); + + cy.get('#verify-submit').should('exist'); + cy.get('#verify-submit').click(); + cy.url().should('contain', lloydGeorgeRecordUrl); + + cy.getByTestId('view-0-link').should('exist'); + cy.getByTestId('view-0-link').click(); + + cy.getByTestId('add-files-link').should('exist'); + cy.getByTestId('add-files-link').click(); + + uploadedFilePathNames.forEach((file) => { + cy.getByTestId('button-input').selectFile(file, { force: true }); + var index = uploadedFilePathNames.indexOf(file); + cy.get('#selected-documents-table').should('contain', uploadedFileNames[index]); + }); + + cy.get('#continue-button').should('exist'); + cy.get('#continue-button').click(); + cy.url().should('contain', selectOrderUrl); + + cy.get('#selected-documents-table').should('exist'); + cy.get('#selected-documents-table').should( + 'contain', + 'Existing scanned paper notes', + ); + uploadedFileNames.forEach((name) => { + cy.get('#selected-documents-table').should('contain', name); + }); + cy.getByTestId('form-submit-button').should('exist').click(); + + cy.url().should('contain', confirmationUrl); + uploadedFileNames.forEach((name) => { + cy.get('#selected-16521000000101-table').should('contain', name); + }); + cy.getByTestId('confirm-button').should('exist').click(); + + cy.getByTestId('upload-complete-page', { timeout: 25000 }).should('exist'); + cy.getByTestId('upload-complete-card').should('be.visible'); + + cy.getByTestId('home-btn').should('exist'); + cy.getByTestId('home-btn').eq(1).click(); + cy.navigateToPatientSearchPage(); + + cy.get('#nhs-number-input').type(activePatient); + cy.get('#search-submit').click(); + cy.get('.patient-results-form').should('exist'); + + cy.get('.patient-results-form').submit(); + + cy.getByTestId('view-0-link').should('exist'); + cy.getByTestId('view-0-link').click(); + cy.get('#pdf-viewer', { timeout: 20000 }).should('exist'); + + cy.getByTestId('pdf-viewer').should('be.visible'); + + cy.get('pdfjs-viewer-element') + .shadow() + .find('iframe') + .its('0.contentDocument.body') + .should('not.be.empty') + .then(cy.wrap) + .find('#viewerContainer') + .then(($container) => { + cy.wrap($container) + .find('.page[data-page-number="7"]', { timeout: 2000 }) + .should('exist') + .then(($page7) => { + $page7[0].scrollIntoView({ block: 'center' }); + }); + }); + + cy.get('pdfjs-viewer-element') + .shadow() + .find('iframe') + .its('0.contentDocument.body') + .then(cy.wrap) + .find('.page[data-page-number="7"] .textLayer') + .should('contain', '6'); + }, + ); + }); +}); diff --git a/app/cypress/fixtures/dynamo-db-items/active-patient-h81109.json b/app/cypress/fixtures/dynamo-db-items/active-patient-h81109.json index 657bd9a2f3..cc540887a6 100644 --- a/app/cypress/fixtures/dynamo-db-items/active-patient-h81109.json +++ b/app/cypress/fixtures/dynamo-db-items/active-patient-h81109.json @@ -1,4 +1,5 @@ { + "Author": "H81109", "ContentType": "application/pdf", "Created": "2023-12-05T16:06:48.300566Z", "CurrentGpOds": "H81109", @@ -7,13 +8,14 @@ "DocStatus": "final", "DocumentScanCreation": "2023-01-01", "DocumentSnomedCodeType": "16521000000101", - "FileLocation": "s3://{env}-lloyd-george-store/9730153817/e4a6d7f7-01f3-44be-8964-515b2c0ec180", + "FileLocation": "s3://{env}-lloyd-george-store/9730153817/c165a49e-71b3-4662-8494-49c6b08070ba", "FileName": "1of1_Lloyd_George_Record_[Haley Glenda RUDKIN]_[9730153817]_[07-08-2023].pdf", "FileSize": "192910", "ID": "c165a49e-71b3-4662-8494-49c6b08070ba", "LastUpdated": "1713800398", "NhsNumber": "9730153817", - "S3FileKey": "9730153817/e4a6d7f7-01f3-44be-8964-515b2c0ec180", + "S3FileKey": "9730153817/c165a49e-71b3-4662-8494-49c6b08070ba", + "S3VersionID": "_Ac549L3L0WbwLXwrIqtQ6ZsLVawWgaU", "Status": "current", "Uploaded": true, "Uploading": false, diff --git a/app/cypress/fixtures/lg-files/simple_pages/6.pdf b/app/cypress/fixtures/lg-files/simple_pages/6.pdf new file mode 100644 index 0000000000000000000000000000000000000000..00a0602ca2e74199e1455e709793e1952db4101c GIT binary patch literal 13541 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 literal 0 HcmV?d00001 diff --git a/app/cypress/fixtures/lg-files/simple_pages/7.pdf b/app/cypress/fixtures/lg-files/simple_pages/7.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ce9f414b697b3c1bd565ded9282b2b627a81b22e GIT binary patch literal 13389 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 Date: Wed, 18 Mar 2026 13:48:41 +0000 Subject: [PATCH 2/5] export pdfViewerPageShouldBeText page/ text comparison --- .../add_scanned_paper_notes.cy.js | 31 +++++-------------- app/cypress/support/aws.commands.ts | 27 ++++++++++++++++ app/cypress/support/commands.d.ts | 2 ++ app/cypress/support/e2e.ts | 1 + 4 files changed, 38 insertions(+), 23 deletions(-) diff --git a/app/cypress/e2e/1-ndr-smoke-tests/gp_user_workflows/add_scanned_paper_notes.cy.js b/app/cypress/e2e/1-ndr-smoke-tests/gp_user_workflows/add_scanned_paper_notes.cy.js index 43b409ef5f..75fde9208d 100644 --- a/app/cypress/e2e/1-ndr-smoke-tests/gp_user_workflows/add_scanned_paper_notes.cy.js +++ b/app/cypress/e2e/1-ndr-smoke-tests/gp_user_workflows/add_scanned_paper_notes.cy.js @@ -24,6 +24,12 @@ const uploadedFileNames = ['6', '7']; describe('GP Workflow: Add Lloyd George record', () => { context('Add a Lloyd George document', () => { beforeEach(() => { + cy.deleteItemsBySecondaryKeyFromDynamoDb( + lgTableName, + 'NhsNumberIndex', + 'NhsNumber', + activePatient.toString(), + ); cy.addPdfFileToS3(bucketName, filePath, 'test_patient_record.pdf'); cy.addItemToDynamoDb(lgTableName, dbItem); }); @@ -110,29 +116,8 @@ describe('GP Workflow: Add Lloyd George record', () => { cy.getByTestId('pdf-viewer').should('be.visible'); - cy.get('pdfjs-viewer-element') - .shadow() - .find('iframe') - .its('0.contentDocument.body') - .should('not.be.empty') - .then(cy.wrap) - .find('#viewerContainer') - .then(($container) => { - cy.wrap($container) - .find('.page[data-page-number="7"]', { timeout: 2000 }) - .should('exist') - .then(($page7) => { - $page7[0].scrollIntoView({ block: 'center' }); - }); - }); - - cy.get('pdfjs-viewer-element') - .shadow() - .find('iframe') - .its('0.contentDocument.body') - .then(cy.wrap) - .find('.page[data-page-number="7"] .textLayer') - .should('contain', '6'); + cy.pdfViewerPageShouldBeText(7, '6'); + cy.pdfViewerPageShouldBeText(8, '7'); }, ); }); diff --git a/app/cypress/support/aws.commands.ts b/app/cypress/support/aws.commands.ts index 05dd472ddb..caf706ece6 100644 --- a/app/cypress/support/aws.commands.ts +++ b/app/cypress/support/aws.commands.ts @@ -168,3 +168,30 @@ Cypress.Commands.add( }); }, ); + +Cypress.Commands.add('pdfViewerPageShouldBeText', (pageNumber: number, expectedText: string) => { + cy.get('pdfjs-viewer-element') + .shadow() + .find('iframe') + .its('0.contentDocument.body') + .should('not.be.empty') + .then(cy.wrap) + .find('#viewerContainer') + .then(($container) => { + cy.wrap($container) + .find(`.page[data-page-number="${pageNumber}"]`, { timeout: 2000 }) + .should('exist') + .then(($page) => { + $page[0].scrollIntoView({ block: 'center' }); + }); + }); + + cy.get('pdfjs-viewer-element') + .shadow() + .find('iframe') + .its('0.contentDocument.body') + .then(cy.wrap) + .find(`.page[data-page-number="${pageNumber}"] .textLayer`) + .invoke('text') + .should('eq', expectedText); +}); diff --git a/app/cypress/support/commands.d.ts b/app/cypress/support/commands.d.ts index f29f3799c7..28312f39a8 100644 --- a/app/cypress/support/commands.d.ts +++ b/app/cypress/support/commands.d.ts @@ -36,6 +36,8 @@ declare global { attribute: string, value: string, ): Chainable; + + pdfViewerPageShouldBeText(pageNumber: number, expectedText: string): Chainable; } } } diff --git a/app/cypress/support/e2e.ts b/app/cypress/support/e2e.ts index 55d8886cf1..e1f0258753 100644 --- a/app/cypress/support/e2e.ts +++ b/app/cypress/support/e2e.ts @@ -224,6 +224,7 @@ declare global { navigateToPatientSearchPage(): Chainable; navigateToDownloadReportPage(): Chainable; declineCookies(): Chainable; + pdfViewerPageShouldBeText(pageNumber: number, expectedText: string): Chainable; } } } From c7446fce8a25e9838219ff3e2b7eab19f7f311eb Mon Sep 17 00:00:00 2001 From: Kamen Bachvarov Date: Wed, 18 Mar 2026 14:06:25 +0000 Subject: [PATCH 3/5] parametrise for roles --- .../add_scanned_paper_notes.cy.js | 153 +++++++++--------- 1 file changed, 80 insertions(+), 73 deletions(-) diff --git a/app/cypress/e2e/1-ndr-smoke-tests/gp_user_workflows/add_scanned_paper_notes.cy.js b/app/cypress/e2e/1-ndr-smoke-tests/gp_user_workflows/add_scanned_paper_notes.cy.js index 75fde9208d..e009343426 100644 --- a/app/cypress/e2e/1-ndr-smoke-tests/gp_user_workflows/add_scanned_paper_notes.cy.js +++ b/app/cypress/e2e/1-ndr-smoke-tests/gp_user_workflows/add_scanned_paper_notes.cy.js @@ -47,78 +47,85 @@ describe('GP Workflow: Add Lloyd George record', () => { }); }); - it( - '[Smoke] GP ADMIN can add additional scanned paper notes on top of existing ones and order is correct', - { tags: 'smoke', defaultCommandTimeout: 20000 }, - () => { - cy.smokeLogin(Roles.SMOKE_GP_ADMIN); - cy.navigateToPatientSearchPage(); - - cy.get('#nhs-number-input').should('exist'); - cy.get('#nhs-number-input').click(); - cy.get('#nhs-number-input').type(activePatient); - cy.getByTestId('search-submit-btn').should('exist'); - cy.getByTestId('search-submit-btn').click(); - cy.url({ timeout: 15000 }).should('contain', patientVerifyUrl); - - cy.get('#verify-submit').should('exist'); - cy.get('#verify-submit').click(); - cy.url().should('contain', lloydGeorgeRecordUrl); - - cy.getByTestId('view-0-link').should('exist'); - cy.getByTestId('view-0-link').click(); - - cy.getByTestId('add-files-link').should('exist'); - cy.getByTestId('add-files-link').click(); - - uploadedFilePathNames.forEach((file) => { - cy.getByTestId('button-input').selectFile(file, { force: true }); - var index = uploadedFilePathNames.indexOf(file); - cy.get('#selected-documents-table').should('contain', uploadedFileNames[index]); - }); - - cy.get('#continue-button').should('exist'); - cy.get('#continue-button').click(); - cy.url().should('contain', selectOrderUrl); - - cy.get('#selected-documents-table').should('exist'); - cy.get('#selected-documents-table').should( - 'contain', - 'Existing scanned paper notes', - ); - uploadedFileNames.forEach((name) => { - cy.get('#selected-documents-table').should('contain', name); - }); - cy.getByTestId('form-submit-button').should('exist').click(); - - cy.url().should('contain', confirmationUrl); - uploadedFileNames.forEach((name) => { - cy.get('#selected-16521000000101-table').should('contain', name); - }); - cy.getByTestId('confirm-button').should('exist').click(); - - cy.getByTestId('upload-complete-page', { timeout: 25000 }).should('exist'); - cy.getByTestId('upload-complete-card').should('be.visible'); - - cy.getByTestId('home-btn').should('exist'); - cy.getByTestId('home-btn').eq(1).click(); - cy.navigateToPatientSearchPage(); - - cy.get('#nhs-number-input').type(activePatient); - cy.get('#search-submit').click(); - cy.get('.patient-results-form').should('exist'); - - cy.get('.patient-results-form').submit(); - - cy.getByTestId('view-0-link').should('exist'); - cy.getByTestId('view-0-link').click(); - cy.get('#pdf-viewer', { timeout: 20000 }).should('exist'); - - cy.getByTestId('pdf-viewer').should('be.visible'); - - cy.pdfViewerPageShouldBeText(7, '6'); - cy.pdfViewerPageShouldBeText(8, '7'); - }, - ); + const roles = [Roles.SMOKE_GP_ADMIN, Roles.SMOKE_GP_CLINICAL]; + + roles.forEach((role) => { + it( + `[Smoke] ${role} can add additional scanned paper notes and order is correct`, + { tags: 'smoke', defaultCommandTimeout: 20000 }, + () => { + cy.smokeLogin(role); + cy.navigateToPatientSearchPage(); + + cy.get('#nhs-number-input').should('exist'); + cy.get('#nhs-number-input').click(); + cy.get('#nhs-number-input').type(activePatient); + cy.getByTestId('search-submit-btn').should('exist'); + cy.getByTestId('search-submit-btn').click(); + cy.url({ timeout: 15000 }).should('contain', patientVerifyUrl); + + cy.get('#verify-submit').should('exist'); + cy.get('#verify-submit').click(); + cy.url().should('contain', lloydGeorgeRecordUrl); + + cy.getByTestId('view-0-link').should('exist'); + cy.getByTestId('view-0-link').click(); + + cy.getByTestId('add-files-link').should('exist'); + cy.getByTestId('add-files-link').click(); + + uploadedFilePathNames.forEach((file) => { + cy.getByTestId('button-input').selectFile(file, { force: true }); + var index = uploadedFilePathNames.indexOf(file); + cy.get('#selected-documents-table').should( + 'contain', + uploadedFileNames[index], + ); + }); + + cy.get('#continue-button').should('exist'); + cy.get('#continue-button').click(); + cy.url().should('contain', selectOrderUrl); + + cy.get('#selected-documents-table').should('exist'); + cy.get('#selected-documents-table').should( + 'contain', + 'Existing scanned paper notes', + ); + uploadedFileNames.forEach((name) => { + cy.get('#selected-documents-table').should('contain', name); + }); + cy.getByTestId('form-submit-button').should('exist').click(); + + cy.url().should('contain', confirmationUrl); + uploadedFileNames.forEach((name) => { + cy.get('#selected-16521000000101-table').should('contain', name); + }); + cy.getByTestId('confirm-button').should('exist').click(); + + cy.getByTestId('upload-complete-page', { timeout: 25000 }).should('exist'); + cy.getByTestId('upload-complete-card').should('be.visible'); + + cy.getByTestId('home-btn').should('exist'); + cy.getByTestId('home-btn').eq(1).click(); + cy.navigateToPatientSearchPage(); + + cy.get('#nhs-number-input').type(activePatient); + cy.get('#search-submit').click(); + cy.get('.patient-results-form').should('exist'); + + cy.get('.patient-results-form').submit(); + + cy.getByTestId('view-0-link').should('exist'); + cy.getByTestId('view-0-link').click(); + cy.get('#pdf-viewer', { timeout: 20000 }).should('exist'); + + cy.getByTestId('pdf-viewer').should('be.visible'); + + cy.pdfViewerPageShouldBeText(7, '6'); + cy.pdfViewerPageShouldBeText(8, '7'); + }, + ); + }); }); }); From 29328a0b18784cf99819b8be5b1d6398184e1437 Mon Sep 17 00:00:00 2001 From: Kamen Bachvarov Date: Wed, 18 Mar 2026 14:08:44 +0000 Subject: [PATCH 4/5] rename --- .../gp_user_workflows/add_scanned_paper_notes.cy.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/cypress/e2e/1-ndr-smoke-tests/gp_user_workflows/add_scanned_paper_notes.cy.js b/app/cypress/e2e/1-ndr-smoke-tests/gp_user_workflows/add_scanned_paper_notes.cy.js index e009343426..4725434cc1 100644 --- a/app/cypress/e2e/1-ndr-smoke-tests/gp_user_workflows/add_scanned_paper_notes.cy.js +++ b/app/cypress/e2e/1-ndr-smoke-tests/gp_user_workflows/add_scanned_paper_notes.cy.js @@ -21,8 +21,8 @@ const uploadedFilePathNames = [ ]; const uploadedFileNames = ['6', '7']; -describe('GP Workflow: Add Lloyd George record', () => { - context('Add a Lloyd George document', () => { +describe('GP Workflow: Add additional scanned paper notes in correct order', () => { + context('Add additional scanned paper notes in correct order', () => { beforeEach(() => { cy.deleteItemsBySecondaryKeyFromDynamoDb( lgTableName, From 58de1de1fb54edf8cdb3f537002dea02bd743bb2 Mon Sep 17 00:00:00 2001 From: Kamen Bachvarov Date: Wed, 18 Mar 2026 14:47:41 +0000 Subject: [PATCH 5/5] remove short timeout from page finding cmd --- app/cypress/support/aws.commands.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/cypress/support/aws.commands.ts b/app/cypress/support/aws.commands.ts index caf706ece6..bb9efdbbb0 100644 --- a/app/cypress/support/aws.commands.ts +++ b/app/cypress/support/aws.commands.ts @@ -179,7 +179,7 @@ Cypress.Commands.add('pdfViewerPageShouldBeText', (pageNumber: number, expectedT .find('#viewerContainer') .then(($container) => { cy.wrap($container) - .find(`.page[data-page-number="${pageNumber}"]`, { timeout: 2000 }) + .find(`.page[data-page-number="${pageNumber}"]`) .should('exist') .then(($page) => { $page[0].scrollIntoView({ block: 'center' });