From c9072205418c57ab66392a98c246ebcc7a2fa623 Mon Sep 17 00:00:00 2001 From: lukaw3d Date: Fri, 25 Aug 2023 03:13:39 +0200 Subject: [PATCH] Test react-error-overlay passes dev CSP --- internals/getSecurityHeaders.js | 6 ++---- playwright/tests/csp-react-error-overlay.spec.ts | 12 ++++++++++++ src/app/pages/E2EPage/index.tsx | 11 +++++++++-- 3 files changed, 23 insertions(+), 6 deletions(-) create mode 100644 playwright/tests/csp-react-error-overlay.spec.ts diff --git a/internals/getSecurityHeaders.js b/internals/getSecurityHeaders.js index e6e109447d..3f2a74f875 100644 --- a/internals/getSecurityHeaders.js +++ b/internals/getSecurityHeaders.js @@ -17,9 +17,7 @@ const localnet = ` const hmrWebsocket = ` ws://localhost:2222 ` -const reactErrorOverlay = ` - 'sha256-RV6I4HWPb71LvA27WVD3cEz8GsJrHlfcM/2X2Q5gV00=' -` +const reactErrorOverlay = `'sha256-RV6I4HWPb71LvA27WVD3cEz8GsJrHlfcM/2X2Q5gV00='` const hmrScripts = ` 'unsafe-eval' ` @@ -106,4 +104,4 @@ const getPermissionsPolicy = () => .join(' ') .replace(/ ,/g, ',') -module.exports = { getCsp, getPermissionsPolicy } +module.exports = { getCsp, getPermissionsPolicy, reactErrorOverlay } diff --git a/playwright/tests/csp-react-error-overlay.spec.ts b/playwright/tests/csp-react-error-overlay.spec.ts new file mode 100644 index 0000000000..7a340d5518 --- /dev/null +++ b/playwright/tests/csp-react-error-overlay.spec.ts @@ -0,0 +1,12 @@ +import { test, expect } from '@playwright/test' +import { reactErrorOverlay } from '../../internals/getSecurityHeaders.js' + +test('Dev Content-Security-Policy should allow react-error-overlay', async ({ page, baseURL }) => { + if (baseURL !== 'http://localhost:3000') test.skip() + expect((await page.request.head('/')).headers()).toHaveProperty('content-security-policy') + expect((await page.request.head('/')).headers()['content-security-policy']).toContain(reactErrorOverlay) + await page.goto('/e2e') + await page.getByRole('button', { name: 'Trigger uncaught error' }).click() + await expect(page.locator('iframe')).toBeVisible() + await expect(page.frameLocator('iframe').getByText('ReferenceError')).toBeVisible() +}) diff --git a/src/app/pages/E2EPage/index.tsx b/src/app/pages/E2EPage/index.tsx index 8dd1e2b988..30fd5b1477 100644 --- a/src/app/pages/E2EPage/index.tsx +++ b/src/app/pages/E2EPage/index.tsx @@ -22,7 +22,7 @@ export function E2EPage() {

- +
@@ -118,7 +118,7 @@ function UnsafePasswordField(props: { ) } -function TriggerFatalError() { +function TriggerError() { const dispatch = useDispatch() return (
@@ -128,6 +128,13 @@ function TriggerFatalError() { dispatch(walletActions.openWalletFromPrivateKey({ privateKey: '0xAA', choosePassword: undefined })) }} /> +
) }