diff --git a/OCR/frontend/e2e/ReviewTemplate.spec.ts b/OCR/frontend/e2e/ReviewTemplate.spec.ts new file mode 100644 index 00000000..7542543e --- /dev/null +++ b/OCR/frontend/e2e/ReviewTemplate.spec.ts @@ -0,0 +1,58 @@ +import { test, expect } from "@playwright/test"; + +test.describe("ReviewTemplate Page", () => { + test.beforeEach(async ({ page }) => { + // Navigate to the ReviewTemplate page + await page.goto("http://localhost:5173/extract/review"); + }); + + test("Document image scrollable", async ({ page }) => { + // Check if the document is scrollable + const scrollContainer = page.locator("div[style*='overflow-y: auto']"); + const beforeScroll = await scrollContainer.evaluate((el) => el.scrollTop); + + await scrollContainer.evaluate((el) => el.scrollBy(0, 100)); + const afterScroll = await scrollContainer.evaluate((el) => el.scrollTop); + + expect(afterScroll).toBeGreaterThan(beforeScroll); + }); + + // Test the Back button functionality + test("Back button navigates correctly", async ({ page }) => { + const backButton = page.getByRole("button", { name: "Back" }); + await expect(backButton).toBeVisible(); + + await backButton.click(); + await expect(page).toHaveURL("/extract/upload"); + }); + + // Test the Submit button functionality + test("Submit button navigates correctly", async ({ page }) => { + const submitButton = page.getByRole("button", { name: "Submit" }); + await expect(submitButton).toBeVisible(); + + await submitButton.click(); + await expect(page).toHaveURL("/extract/submit"); + }); + + // Test the extracted data section + test("Displays extracted data with overall confidence score", async ({ + page, + }) => { + const extractedDataHeader = page.getByRole("heading", { + name: "Extracted Data", + }); + await expect(extractedDataHeader).toBeVisible(); + + await expect(page.locator("p.font-sans")).toHaveText( + "Review and edit errors before you submit." + ); + }); + + test("Table contains the correct headers", async ({ page }) => { + const headers = page.locator("th"); + await expect(headers.nth(0)).toHaveText("Label"); // First header + await expect(headers.nth(1)).toHaveText("Value"); // Second header + await expect(headers.nth(2)).toHaveText("Label Confidence"); // Third header + }); +}); diff --git a/OCR/frontend/src/components/ExtractDataHeader.tsx b/OCR/frontend/src/components/ExtractDataHeader.tsx index 8b53b52f..da93cde9 100644 --- a/OCR/frontend/src/components/ExtractDataHeader.tsx +++ b/OCR/frontend/src/components/ExtractDataHeader.tsx @@ -4,12 +4,14 @@ import { Button, Icon, Header } from "@trussworks/react-uswds"; interface ExtractDataHeaderProps { onBack: () => void; onSubmit: () => void; + onExit: () => void; isUploadComplete: boolean; } export const ExtractDataHeader: React.FC = ({ onBack, onSubmit, + onExit, isUploadComplete, }) => { return ( @@ -27,7 +29,7 @@ export const ExtractDataHeader: React.FC = ({ unstyled type="button" style={{ paddingRight: "8px" }} - onClick={onBack} + onClick={onExit} > @@ -36,7 +38,6 @@ export const ExtractDataHeader: React.FC = ({