Skip to content

Commit

Permalink
fix: some e2e tests
Browse files Browse the repository at this point in the history
  • Loading branch information
arthurgeron committed Jan 27, 2025
1 parent db5a2cf commit 18c8ad9
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 18 deletions.
58 changes: 47 additions & 11 deletions packages/app/playwright/e2e/ReportError.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ test.describe('ReportError', () => {
await window.fuelDB.errors.add({
id: '12345',
error: {
name: 'React error',
name: 'React$ error',
message: 'Test Error',
stack: 'Line error 1',
},
Expand All @@ -85,8 +85,8 @@ test.describe('ReportError', () => {
await window.fuelDB.errors.add({
id: '12345',
error: {
name: 'React error',
message: 'Test Error',
name: 'React$ error',
message: 'Test$ Error',
stack: 'Line error 1',
},
extra: {
Expand All @@ -103,20 +103,21 @@ test.describe('ReportError', () => {
page.locator(`[data-key="hasErrors"]`).click();
await hasText(page, /Unexpected error/i);

expect((await getPageErrors(page)).length).toBe(1);
// report error
await getByAriaLabel(page, 'Ignore error(s)').click();
await expect(page.getByText(/Unexpected error/i)).toHaveCount(0);

const errorsAfterReporting = await getPageErrors(page);
expect(errorsAfterReporting.length).toBe(1);
await page.pause();
expect((await getPageErrors(page)).length).toBe(0);
});
test('should be able to dismiss all errors', async () => {
await visit(page, '/');
await page.evaluate(async () => {
await window.fuelDB.errors.add({
id: '12345',
error: {
name: 'React error',
name: 'React$ error',
message: 'Test Error',
stack: 'Line error 1',
},
Expand Down Expand Up @@ -150,7 +151,7 @@ test.describe('ReportError', () => {
await window.fuelDB.errors.add({
id: '12345',
error: {
name: 'React error',
name: 'React$ error',
message: 'Test Error',
stack: 'Line error 1',
},
Expand All @@ -176,10 +177,10 @@ test.describe('ReportError', () => {
expect(errorsAfterReporting.length).toBe(0);
});
test('should detect and capture global errors', async () => {
await visit(page, '/');
await page.evaluate(async () => {
console.error(new Error('Test Error'));
console.error(new Error('New Error'));
});
await visit(page, '/');
await reload(page);
await getByAriaLabel(page, 'Menu').click();
page.locator(`[data-key="hasErrors"]`).click();
Expand All @@ -195,7 +196,7 @@ test.describe('ReportError', () => {
await window.fuelDB.errors.add({
id: '12345',
error: {
name: 'React error',
name: 'React$ error',
message: 'Test Error',
stack: 'Line error 1',
},
Expand All @@ -210,7 +211,7 @@ test.describe('ReportError', () => {
await window.fuelDB.errors.add({
id: '123456',
error: {
name: 'React error',
name: 'React$ error',
message: 'Test Error',
stack: 'Line error 1',
},
Expand All @@ -231,4 +232,39 @@ test.describe('ReportError', () => {
const errorsAfterReporting = await getPageErrors(page);
expect(errorsAfterReporting.length).toBe(1);
});
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',
stack: 'Line error 1',
},
extra: {
timestamp: Date.now(),
location: 'http://localhost:3000',
pathname: '/',
hash: '#',
counts: 0,
},
});
});
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);
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,9 @@ export const reportErrorMachine = createMachine(
const errors = (await context.reportErrorService.getErrors()).filter(
(e) => !getErrorIgnoreData(e?.error)?.action
);
context.reportErrorService.handleAndRemoveOldIgnoredErrors(errors);
await context.reportErrorService.handleAndRemoveOldIgnoredErrors(
errors
);

return {
hasErrors,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,7 @@ export class ReportErrorService {
}

async getErrors(): Promise<StoredFuelWalletError[]> {
return (await db.errors.toArray()).filter(
(e) => !getErrorIgnoreData(e?.error)?.action
);
return await db.errors.toArray();
}

async clearErrors() {
Expand All @@ -65,7 +63,7 @@ export class ReportErrorService {
// Convert to for of
for (const e of errors) {
const errorIgnoreData = getErrorIgnoreData(e?.error);
if (!errorIgnoreData?.action) {
if (errorIgnoreData?.action) {
errorsBeingRemoved.push(
new Promise((resolve) => {
if (errorIgnoreData?.action === 'hide') {
Expand Down
4 changes: 2 additions & 2 deletions packages/app/src/systems/Error/utils/getErrorIgnoreData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -124,13 +124,13 @@ const IGNORED_ERRORS: IgnoredError[] = [
},
{
value: 'Error fetching asset from db',
field: 'message',
field: 'name',
comparison: 'partial',
action: 'hide',
},
{
value: 'React Error',
field: 'message',
field: 'name',
comparison: 'partial',
action: 'hide',
},
Expand Down

0 comments on commit 18c8ad9

Please sign in to comment.