From ecd8524a09ec142d349f2046d535a4e3ad01ae55 Mon Sep 17 00:00:00 2001 From: Arthur Geron <3487334+arthurgeron@users.noreply.github.com> Date: Mon, 27 Jan 2025 18:59:30 -0300 Subject: [PATCH] fix: some e2e tests --- .../app/playwright/e2e/ReportError.test.ts | 61 +++++++++++-------- .../Error/machines/reportErrorMachine.tsx | 3 + .../systems/Error/utils/getErrorIgnoreData.ts | 6 ++ 3 files changed, 44 insertions(+), 26 deletions(-) diff --git a/packages/app/playwright/e2e/ReportError.test.ts b/packages/app/playwright/e2e/ReportError.test.ts index 29673d87b8..96a9b1ab59 100644 --- a/packages/app/playwright/e2e/ReportError.test.ts +++ b/packages/app/playwright/e2e/ReportError.test.ts @@ -48,9 +48,11 @@ test.describe('ReportError', () => { await getByAriaLabel(page, 'Send error reports').click(); await expect(page.getByText(/Unexpected error/)).toHaveCount(0); - await page.waitForTimeout(2000); - const errorsAfterReporting = await getPageErrors(page); - expect(errorsAfterReporting.length).toBe(0); + await expect + .poll(async () => (await getPageErrors(page)).length, { + timeout: 10000, + }) + .toBe(0); }); test('should show Review Error in menu when there is a error in the database', async () => { @@ -108,8 +110,11 @@ test.describe('ReportError', () => { await getByAriaLabel(page, 'Ignore error(s)').click(); await expect(page.getByText(/Unexpected error/i)).toHaveCount(0); - await page.pause(); - expect((await getPageErrors(page)).length).toBe(0); + await expect + .poll(async () => (await getPageErrors(page)).length, { + timeout: 10000, + }) + .toBe(1); }); test('should be able to dismiss all errors', async () => { await visit(page, '/'); @@ -142,8 +147,11 @@ test.describe('ReportError', () => { ).click(); await expect(page.getByText(/Unexpected error/i)).toHaveCount(0); - const errorsAfterReporting = await getPageErrors(page); - expect(errorsAfterReporting.length).toBe(0); + await expect + .poll(async () => (await getPageErrors(page)).length, { + timeout: 10000, + }) + .toBe(0); }); test('should hide when the single error is dismissed', async () => { await visit(page, '/'); @@ -173,8 +181,11 @@ test.describe('ReportError', () => { await getByAriaLabel(page, 'Dismiss error').click(); await expect(page.getByText(/Unexpected error/i)).toHaveCount(0); - const errorsAfterReporting = await getPageErrors(page); - expect(errorsAfterReporting.length).toBe(0); + await expect + .poll(async () => (await getPageErrors(page)).length, { + timeout: 10000, + }) + .toBe(0); }); test('should detect and capture global errors', async () => { await page.evaluate(async () => { @@ -234,12 +245,13 @@ test.describe('ReportError', () => { }); test('should not show ignored errors', async () => { await visit(page, '/'); + await page.evaluate(async () => { await window.fuelDB.errors.add({ id: '12345', error: { - name: 'React error', - message: 'React error', + name: 'React Error', + message: 'React Error', stack: 'Line error 1', }, extra: { @@ -251,20 +263,17 @@ test.describe('ReportError', () => { }, }); }); - await reload(page); - await getByAriaLabel(page, 'Menu').click(); - // hasErrors should not be visible - expect - .poll(() => page.locator(`[data-key="hasErrors"]`).isVisible(), { - timeout: 1000, - }) - .toBeFalsy(); - await reload(page); - const errorsAfterReporting = await getPageErrors(page); - expect - .poll(() => errorsAfterReporting.length, { - timeout: 1000, - }) - .toBe(0); + await expect + .poll( + async () => { + return (await getPageErrors(page)).find( + (e) => e.error.name === 'React Error' + ); + }, + { + timeout: 10000, + } + ) + .toBeUndefined(); }); }); diff --git a/packages/app/src/systems/Error/machines/reportErrorMachine.tsx b/packages/app/src/systems/Error/machines/reportErrorMachine.tsx index 0bfc14a76f..6dfc352820 100644 --- a/packages/app/src/systems/Error/machines/reportErrorMachine.tsx +++ b/packages/app/src/systems/Error/machines/reportErrorMachine.tsx @@ -125,6 +125,9 @@ export const reportErrorMachine = createMachine( target: 'idle', }, ], + onError: { + target: 'idle', + }, }, }, reporting: { diff --git a/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts b/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts index 97ec52e110..3788f2322c 100644 --- a/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts +++ b/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts @@ -131,6 +131,12 @@ const IGNORED_ERRORS: IgnoredError[] = [ { value: 'React Error', field: 'name', + comparison: 'exact', + action: 'hide', + }, + { + value: 'React Error', + field: 'message', comparison: 'partial', action: 'hide', },