From 6193885df41ae4f097ae615687cead85c304ae1a Mon Sep 17 00:00:00 2001 From: etanb Date: Thu, 29 Aug 2024 14:52:21 -0700 Subject: [PATCH 1/4] fix download issue e2e --- frontend-react/e2e/helpers/utils.ts | 15 +++++++++++++++ .../daily-data-page-user-flow.spec.ts | 16 ++++++++-------- 2 files changed, 23 insertions(+), 8 deletions(-) rename frontend-react/e2e/spec/{all => chromium-only}/authenticated/daily-data-page-user-flow.spec.ts (97%) diff --git a/frontend-react/e2e/helpers/utils.ts b/frontend-react/e2e/helpers/utils.ts index 00324bebd68..384cfdcf438 100644 --- a/frontend-react/e2e/helpers/utils.ts +++ b/frontend-react/e2e/helpers/utils.ts @@ -139,3 +139,18 @@ export function toDateWithTime(date: string, time?: string) { } return toDateTime; } + +export function removeTimestamp(filename: string) { + // Example string: "co.yml-beb0c9d9-ca1f-4af3-853e-0aba61541f66-20240829191221.hl7" + // Find the last hyphen and the last dot in the string + const lastHyphenIndex = filename.lastIndexOf("-"); + const lastDotIndex = filename.lastIndexOf("."); + + // If both indices are found, implying a properly formatted file extension, + // remove the timestamp + if (lastHyphenIndex !== -1 && lastDotIndex !== -1 && lastHyphenIndex < lastDotIndex) { + return filename.slice(0, lastHyphenIndex); + } + + return filename; +} diff --git a/frontend-react/e2e/spec/all/authenticated/daily-data-page-user-flow.spec.ts b/frontend-react/e2e/spec/chromium-only/authenticated/daily-data-page-user-flow.spec.ts similarity index 97% rename from frontend-react/e2e/spec/all/authenticated/daily-data-page-user-flow.spec.ts rename to frontend-react/e2e/spec/chromium-only/authenticated/daily-data-page-user-flow.spec.ts index 891a2d47340..8b952d433df 100644 --- a/frontend-react/e2e/spec/all/authenticated/daily-data-page-user-flow.spec.ts +++ b/frontend-react/e2e/spec/chromium-only/authenticated/daily-data-page-user-flow.spec.ts @@ -4,6 +4,7 @@ import { format } from "date-fns"; import fs from "node:fs"; import { expectTableColumnValues, + removeTimestamp, tableColumnDateTimeInRange, tableDataCellValue, tableRows, @@ -79,10 +80,6 @@ test.describe( test.describe("admin user", () => { test.use({ storageState: "e2e/.auth/admin.json" }); - test.beforeAll(({ browserName }) => { - test.skip(browserName !== "chromium"); - }); - test.describe(`${TEST_ORG_IGNORE} org - ${TEST_ORG_UP_RECEIVER_UP} receiver`, () => { test.describe("onLoad", () => { test("has correct title", async ({ dailyDataPage }) => { @@ -102,6 +99,7 @@ test.describe( }); test("table has pagination", async ({ dailyDataPage }) => { + await dailyDataPage.page.locator(".usa-table tbody").waitFor({ state: "visible" }); await expect(dailyDataPage.page.locator('[aria-label="Pagination"]')).toBeAttached(); }); @@ -292,9 +290,11 @@ test.describe( expect(await tableDataCellValue(dailyDataPage.page, 0, 0)).toEqual(reportId); }); - test("returns match for Filename", async ({ dailyDataPage }) => { + test.skip("returns match for Filename", async ({ dailyDataPage }) => { + // Filename search is currently broken and being tracked + // in ticket #15644 const fileName = await tableDataCellValue(dailyDataPage.page, 0, 4); - await searchInput(dailyDataPage.page).fill(fileName); + await searchInput(dailyDataPage.page).fill(removeTimestamp(fileName)); await searchButton(dailyDataPage.page).click(); await dailyDataPage.page.locator(".usa-table tbody").waitFor({ state: "visible" }); @@ -365,7 +365,7 @@ test.describe( }); }); - test.describe.skip("on 'Filename' click", () => { + test.describe("on 'Filename' click", () => { test.beforeEach(async ({ dailyDataPage }) => { await dailyDataPage.page.locator(".usa-table tbody").waitFor({ state: "visible" }); await dailyDataPage.page.locator("#receiver-dropdown").selectOption(TEST_ORG_UP_RECEIVER_UP); @@ -387,7 +387,7 @@ test.describe( const download = await downloadProm; // assert filename - expect(download.suggestedFilename()).toEqual(expect.stringContaining(fileName)); + expect(removeTimestamp(download.suggestedFilename())).toEqual(removeTimestamp(fileName)); // get and assert stats expect((await fs.promises.stat(await download.path())).size).toBeGreaterThan(200); From 25702ac5c6ae5a4419a4aa8d3855f26bf6da8cc9 Mon Sep 17 00:00:00 2001 From: etanb Date: Thu, 29 Aug 2024 16:59:14 -0700 Subject: [PATCH 2/4] make sure link tester waits properly --- .../e2e/spec/chromium-only/public-pages-link-check.spec.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/frontend-react/e2e/spec/chromium-only/public-pages-link-check.spec.ts b/frontend-react/e2e/spec/chromium-only/public-pages-link-check.spec.ts index 8c615cfa158..5902eb33851 100644 --- a/frontend-react/e2e/spec/chromium-only/public-pages-link-check.spec.ts +++ b/frontend-react/e2e/spec/chromium-only/public-pages-link-check.spec.ts @@ -55,7 +55,9 @@ test.describe("Evaluate links on public facing pages", { tag: "@warning" }, () = // Set test timeout to be 1 minute instead of 30 seconds test.setTimeout(60000); for (const path of urlPaths) { - await page.goto(path); + await page.goto(path, { + waitUntil: "networkidle", + }); const baseUrl = new URL(page.url()).origin; const allATags = await page.getByRole("link", { includeHidden: true }).elementHandles(); From f7755ac2f2fbe22ff5d2a8b88873c31a27b687ef Mon Sep 17 00:00:00 2001 From: etanb Date: Fri, 30 Aug 2024 10:17:08 -0700 Subject: [PATCH 3/4] PR comment fix --- frontend-react/e2e/helpers/utils.ts | 2 +- .../authenticated/daily-data-page-user-flow.spec.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend-react/e2e/helpers/utils.ts b/frontend-react/e2e/helpers/utils.ts index 384cfdcf438..eaa20ef8e30 100644 --- a/frontend-react/e2e/helpers/utils.ts +++ b/frontend-react/e2e/helpers/utils.ts @@ -140,7 +140,7 @@ export function toDateWithTime(date: string, time?: string) { return toDateTime; } -export function removeTimestamp(filename: string) { +export function removeDateTime(filename: string) { // Example string: "co.yml-beb0c9d9-ca1f-4af3-853e-0aba61541f66-20240829191221.hl7" // Find the last hyphen and the last dot in the string const lastHyphenIndex = filename.lastIndexOf("-"); diff --git a/frontend-react/e2e/spec/chromium-only/authenticated/daily-data-page-user-flow.spec.ts b/frontend-react/e2e/spec/chromium-only/authenticated/daily-data-page-user-flow.spec.ts index 8b952d433df..cfb01acbe8c 100644 --- a/frontend-react/e2e/spec/chromium-only/authenticated/daily-data-page-user-flow.spec.ts +++ b/frontend-react/e2e/spec/chromium-only/authenticated/daily-data-page-user-flow.spec.ts @@ -4,7 +4,7 @@ import { format } from "date-fns"; import fs from "node:fs"; import { expectTableColumnValues, - removeTimestamp, + removeDateTime, tableColumnDateTimeInRange, tableDataCellValue, tableRows, @@ -294,7 +294,7 @@ test.describe( // Filename search is currently broken and being tracked // in ticket #15644 const fileName = await tableDataCellValue(dailyDataPage.page, 0, 4); - await searchInput(dailyDataPage.page).fill(removeTimestamp(fileName)); + await searchInput(dailyDataPage.page).fill(removeDateTime(fileName)); await searchButton(dailyDataPage.page).click(); await dailyDataPage.page.locator(".usa-table tbody").waitFor({ state: "visible" }); @@ -387,7 +387,7 @@ test.describe( const download = await downloadProm; // assert filename - expect(removeTimestamp(download.suggestedFilename())).toEqual(removeTimestamp(fileName)); + expect(removeDateTime(download.suggestedFilename())).toEqual(removeDateTime(fileName)); // get and assert stats expect((await fs.promises.stat(await download.path())).size).toBeGreaterThan(200); From 3563a1c578d2ea9d11f1e87712d1f3d5f0cff021 Mon Sep 17 00:00:00 2001 From: etanb Date: Fri, 30 Aug 2024 11:59:34 -0700 Subject: [PATCH 4/4] lint fix --- .../e2e/spec/chromium-only/public-pages-link-check.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend-react/e2e/spec/chromium-only/public-pages-link-check.spec.ts b/frontend-react/e2e/spec/chromium-only/public-pages-link-check.spec.ts index 5902eb33851..a53fdbc0b7a 100644 --- a/frontend-react/e2e/spec/chromium-only/public-pages-link-check.spec.ts +++ b/frontend-react/e2e/spec/chromium-only/public-pages-link-check.spec.ts @@ -1,4 +1,4 @@ -/* eslint-disable playwright/no-conditional-in-test */ +/* eslint-disable playwright/no-networkidle */ import axios, { AxiosError } from "axios"; import * as fs from "fs"; import { test as baseTest, expect } from "../../test";