* Add a test to confirm console errors fail tests * Check for console errors on all browsers * Ignore error impacting lots of tests * Add more detected errors to the allowlist for now
		
			
				
	
	
		
			311 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			311 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| export const isErrorWhitelisted = (exception: Error) => {
 | |
|   // due to the way webkit/Google Chrome report errors, it was necessary
 | |
|   // to whitelist similar errors separately for each project
 | |
|   let whitelist: {
 | |
|     name: string
 | |
|     message: string
 | |
|     stack: string
 | |
|     foundInSpec: string
 | |
|     project: 'webkit' | 'Google Chrome'
 | |
|   }[] = [
 | |
|     {
 | |
|       name: '',
 | |
|       message: 'undefined',
 | |
|       stack: '',
 | |
|       foundInSpec: `e2e/playwright/sketch-tests.spec.ts Existing sketch with bad code delete user's code`,
 | |
|       project: 'Google Chrome',
 | |
|     },
 | |
|     {
 | |
|       name: '"{"kind"',
 | |
|       message:
 | |
|         '"engine","sourceRanges":[[0,0,0]],"msg":"Failed to get string from response from engine: `JsValue(undefined)`"}"',
 | |
|       stack: '',
 | |
|       foundInSpec: 'e2e/playwright/testing-settings.spec.ts',
 | |
|       project: 'Google Chrome',
 | |
|     },
 | |
|     {
 | |
|       name: '',
 | |
|       message: 'false',
 | |
|       stack: '',
 | |
|       foundInSpec: 'e2e/playwright/testing-segment-overlays.spec.ts',
 | |
|       project: 'Google Chrome',
 | |
|     },
 | |
|     {
 | |
|       name: '{"kind"',
 | |
|       // eslint-disable-next-line no-useless-escape
 | |
|       message: 'no connection to send on',
 | |
|       stack: '',
 | |
|       foundInSpec: 'e2e/playwright/various.spec.ts',
 | |
|       project: 'Google Chrome',
 | |
|     },
 | |
|     {
 | |
|       name: '',
 | |
|       message: 'sketch not found',
 | |
|       stack: '',
 | |
|       foundInSpec:
 | |
|         'e2e/playwright/testing-selections.spec.ts Deselecting line tool should mean nothing happens on click',
 | |
|       project: 'Google Chrome',
 | |
|     },
 | |
|     {
 | |
|       name: 'engine error',
 | |
|       message:
 | |
|         '[{"error_code":"bad_request","message":"Cannot set the camera position with these values"}]',
 | |
|       stack: '',
 | |
|       foundInSpec:
 | |
|         'e2e/playwright/can-create-sketches-on-all-planes-and-their-back-sides.spec.ts XY',
 | |
|       project: 'Google Chrome',
 | |
|     },
 | |
|     {
 | |
|       name: '',
 | |
|       message: 'no connection to send on',
 | |
|       stack: '',
 | |
|       foundInSpec:
 | |
|         'e2e/playwright/can-create-sketches-on-all-planes-and-their-back-sides.spec.ts XY',
 | |
|       project: 'Google Chrome',
 | |
|     },
 | |
|     {
 | |
|       name: 'RangeError',
 | |
|       message: 'Position 160 is out of range for changeset of length 0',
 | |
|       stack: `RangeError: Position 160 is out of range for changeset of length 0
 | |
|     at _ChangeSet.mapPos (http://localhost:3000/node_modules/.vite/deps/chunk-3BHLKIA4.js?v=412eae63:756:13)
 | |
|     at findSharedChunks (http://localhost:3000/node_modules/.vite/deps/chunk-3BHLKIA4.js?v=412eae63:3045:49)
 | |
|     at _RangeSet.compare (http://localhost:3000/node_modules/.vite/deps/chunk-3BHLKIA4.js?v=412eae63:2840:24)
 | |
|     at findChangedDeco (http://localhost:3000/node_modules/.vite/deps/chunk-IZYF444B.js?v=412eae63:3320:12)
 | |
|     at DocView.update (http://localhost:3000/node_modules/.vite/deps/chunk-IZYF444B.js?v=412eae63:2774:20)
 | |
|     at _EditorView.update (http://localhost:3000/node_modules/.vite/deps/chunk-IZYF444B.js?v=412eae63:7056:30)
 | |
|     at DOMObserver.flush (http://localhost:3000/node_modules/.vite/deps/chunk-IZYF444B.js?v=412eae63:6621:17)
 | |
|     at MutationObserver.<anonymous> (http://localhost:3000/node_modules/.vite/deps/chunk-IZYF444B.js?v=412eae63:6322:14)`,
 | |
|       foundInSpec: 'e2e/playwright/editor-tests.spec.ts fold gutters work',
 | |
|       project: 'Google Chrome',
 | |
|     },
 | |
|     {
 | |
|       name: 'RangeError',
 | |
|       message: 'Selection points outside of document',
 | |
|       stack: `RangeError: Selection points outside of document
 | |
|     +     at checkSelection (http://localhost:3000/node_modules/.vite/deps/chunk-3BHLKIA4.js?v=412eae63:1453:13)
 | |
|     +     at new _Transaction (http://localhost:3000/node_modules/.vite/deps/chunk-3BHLKIA4.js?v=412eae63:2014:7)
 | |
|     +     at _Transaction.create (http://localhost:3000/node_modules/.vite/deps/chunk-3BHLKIA4.js?v=412eae63:2022:12)
 | |
|     +     at resolveTransaction (http://localhost:3000/node_modules/.vite/deps/chunk-3BHLKIA4.js?v=412eae63:2155:24)
 | |
|     +     at _EditorState.update (http://localhost:3000/node_modules/.vite/deps/chunk-3BHLKIA4.js?v=412eae63:2281:12)
 | |
|     +     at _EditorView.dispatch (http://localhost:3000/node_modules/.vite/deps/chunk-IZYF444B.js?v=412eae63:6988:148)
 | |
|     +     at EditorManager.selectRange (http://localhost:3000/src/editor/manager.ts:182:22)
 | |
|     +     at AST extrude (http://localhost:3000/src/machines/modelingMachine.ts:828:25)`,
 | |
|       foundInSpec: 'e2e/playwright/editor-tests.spec.ts',
 | |
|       project: 'Google Chrome',
 | |
|     },
 | |
|     {
 | |
|       name: 'Unhandled Promise Rejection',
 | |
|       message: "TypeError: null is not an object (evaluating 'sg.value')",
 | |
|       stack: `Unhandled Promise Rejection: TypeError: null is not an object (evaluating 'sg.value')
 | |
|     at unknown (http://localhost:3000/src/clientSideScene/sceneEntities.ts:466:23)
 | |
|     at unknown (http://localhost:3000/src/clientSideScene/sceneEntities.ts:454:32)
 | |
|     at set up draft line without teardown (http://localhost:3000/src/machines/modelingMachine.ts:983:47)
 | |
|     at unknown (http://localhost:3000/node_modules/.vite/deps/chunk-6FRHHHSJ.js?v=0de2e74f:1877:24)
 | |
|     at handleAction (http://localhost:3000/node_modules/.vite/deps/chunk-6FRHHHSJ.js?v=0de2e74f:1064:26)
 | |
|     at processBlock (http://localhost:3000/node_modules/.vite/deps/chunk-6FRHHHSJ.js?v=0de2e74f:1087:36)
 | |
|     at map ([native code]:0:0)
 | |
|     at resolveActions (http://localhost:3000/node_modules/.vite/deps/chunk-6FRHHHSJ.js?v=0de2e74f:1109:49)
 | |
|     at unknown (http://localhost:3000/node_modules/.vite/deps/chunk-6FRHHHSJ.js?v=0de2e74f:3639:37)
 | |
|     at provide (http://localhost:3000/node_modules/.vite/deps/chunk-6FRHHHSJ.js?v=0de2e74f:1117:18)
 | |
|     at unknown (http://localhost:3000/node_modules/.vite/deps/chunk-6FRHHHSJ.js?v=0de2e74f:2452:30)
 | |
|     at unknown (http://localhost:3000/node_modules/.vite/deps/chunk-6FRHHHSJ.js?v=0de2e74f:1831:43)
 | |
|     at unknown (http://localhost:3000/node_modules/.vite/deps/chunk-6FRHHHSJ.js?v=0de2e74f:1659:17)
 | |
|     at unknown (http://localhost:3000/node_modules/.vite/deps/chunk-6FRHHHSJ.js?v=0de2e74f:1643:19)
 | |
|     at unknown (http://localhost:3000/node_modules/.vite/deps/chunk-6FRHHHSJ.js?v=0de2e74f:1829:33)
 | |
|     at unknown (http://localhost:3000/src/clientSideScene/sceneEntities.ts:263:19)`,
 | |
|       foundInSpec: `e2e/playwright/testing-camera-movement.spec.ts Zoom should be consistent when exiting or entering sketches`,
 | |
|       project: 'webkit',
 | |
|     },
 | |
|     {
 | |
|       name: 'Unhandled Promise Rejection',
 | |
|       message: 'false',
 | |
|       stack: `Unhandled Promise Rejection: false
 | |
|     at unknown (http://localhost:3000/src/clientSideScene/ClientSideSceneComp.tsx:455:78)`,
 | |
|       foundInSpec: `e2e/playwright/testing-segment-overlays.spec.ts line-[tagOutsideSketch]`,
 | |
|       project: 'webkit',
 | |
|     },
 | |
|     {
 | |
|       name: 'Unhandled Promise Rejection',
 | |
|       message: `TypeError: null is not an object (evaluating 'programMemory.get(variableDeclarationName).value')`,
 | |
|       stack: `    +  stack:Unhandled Promise Rejection: TypeError: null is not an object (evaluating 'programMemory.get(variableDeclarationName).value')
 | |
|     +     at unknown (http://localhost:3000/src/machines/modelingMachine.ts:911:49)`,
 | |
|       foundInSpec: `e2e/playwright/can-create-sketches-on-all-planes-and-their-back-sides.spec.ts`,
 | |
|       project: 'webkit',
 | |
|     },
 | |
|     {
 | |
|       name: 'Unhandled Promise Rejection',
 | |
|       message: `null is not an object (evaluating 'programMemory.get(variableDeclarationName).value')`,
 | |
|       stack: `Unhandled Promise Rejection: TypeError: null is not an object (evaluating 'programMemory.get(variableDeclarationName).value')
 | |
|     at unknown (http://localhost:3000/src/machines/modelingMachine.ts:911:49)`,
 | |
|       foundInSpec: `e2e/playwright/testing-camera-movement.spec.ts Zoom should be consistent when exiting or entering sketches`,
 | |
|       project: 'webkit',
 | |
|     },
 | |
|     {
 | |
|       name: 'TypeError',
 | |
|       message: `null is not an object (evaluating 'gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_FLOAT).precision')`,
 | |
|       stack: `TypeError: null is not an object (evaluating 'gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_FLOAT).precision')
 | |
|     at getMaxPrecision (http://localhost:3000/node_modules/.vite/deps/chunk-DEEFU7IG.js?v=d328572b:9557:71)
 | |
|     at WebGLCapabilities (http://localhost:3000/node_modules/.vite/deps/chunk-DEEFU7IG.js?v=d328572b:9570:39)
 | |
|     at initGLContext (http://localhost:3000/node_modules/.vite/deps/chunk-DEEFU7IG.js?v=d328572b:16993:43)
 | |
|     at WebGLRenderer (http://localhost:3000/node_modules/.vite/deps/chunk-DEEFU7IG.js?v=d328572b:17024:18)
 | |
|     at SceneInfra (http://localhost:3000/src/clientSideScene/sceneInfra.ts:185:38)
 | |
|     at module code (http://localhost:3000/src/lib/singletons.ts:14:41)`,
 | |
|       foundInSpec: `e2e/playwright/testing-segment-overlays.spec.ts angledLineToX`,
 | |
|       project: 'webkit',
 | |
|     },
 | |
|     {
 | |
|       name: 'Unhandled Promise Rejection',
 | |
|       message:
 | |
|         '{"kind":"engine","sourceRanges":[[0,0,0]],"msg":"Failed to get string from response from engine: `JsValue(undefined)`"}',
 | |
|       stack: `Unhandled Promise Rejection: {"kind":"engine","sourceRanges":[[0,0,0]],"msg":"Failed to get string from response from engine: \`JsValue(undefined)\`"}
 | |
|     at unknown (http://localhost:3000/src/lang/std/engineConnection.ts:1245:26)`,
 | |
|       foundInSpec:
 | |
|         'e2e/playwright/onboarding-tests.spec.ts Click through each onboarding step',
 | |
|       project: 'webkit',
 | |
|     },
 | |
|     {
 | |
|       name: 'Unhandled Promise Rejection',
 | |
|       message: 'undefined',
 | |
|       stack: '',
 | |
|       foundInSpec: `e2e/playwright/sketch-tests.spec.ts Existing sketch with bad code delete user's code`,
 | |
|       project: 'webkit',
 | |
|     },
 | |
|     {
 | |
|       name: 'Fetch API cannot load https',
 | |
|       message: '/api.dev.zoo.dev/logout due to access control checks.',
 | |
|       stack: `Fetch API cannot load https://api.dev.zoo.dev/logout due to access control checks.
 | |
|     at goToSignInPage (http://localhost:3000/src/components/SettingsAuthProvider.tsx:229:15)
 | |
|     at unknown (http://localhost:3000/node_modules/.vite/deps/chunk-6FRHHHSJ.js?v=d328572b:1877:24)
 | |
|     at handleAction (http://localhost:3000/node_modules/.vite/deps/chunk-6FRHHHSJ.js?v=d328572b:1064:26)
 | |
|     at processBlock (http://localhost:3000/node_modules/.vite/deps/chunk-6FRHHHSJ.js?v=d328572b:1087:36)
 | |
|     at map (:1:11)
 | |
|     at resolveActions (http://localhost:3000/node_modules/.vite/deps/chunk-6FRHHHSJ.js?v=d328572b:1109:49)
 | |
|     at unknown (http://localhost:3000/node_modules/.vite/deps/chunk-6FRHHHSJ.js?v=d328572b:3639:37)
 | |
|     at provide (http://localhost:3000/node_modules/.vite/deps/chunk-6FRHHHSJ.js?v=d328572b:1117:18)
 | |
|     at unknown (http://localhost:3000/node_modules/.vite/deps/chunk-6FRHHHSJ.js?v=d328572b:2452:30)
 | |
|     at unknown (http://localhost:3000/node_modules/.vite/deps/chunk-6FRHHHSJ.js?v=d328572b:1831:43)
 | |
|     at unknown (http://localhost:3000/node_modules/.vite/deps/chunk-6FRHHHSJ.js?v=d328572b:1659:17)
 | |
|     at unknown (http://localhost:3000/node_modules/.vite/deps/chunk-6FRHHHSJ.js?v=d328572b:1643:19)
 | |
|     at unknown (http://localhost:3000/node_modules/.vite/deps/chunk-6FRHHHSJ.js?v=d328572b:1829:33)
 | |
|     at unknown (http://localhost:3000/node_modules/.vite/deps/chunk-6FRHHHSJ.js?v=d328572b:2601:23)`,
 | |
|       foundInSpec:
 | |
|         'e2e/playwright/testing-selections.spec.ts Solids should be select and deletable',
 | |
|       project: 'webkit',
 | |
|     },
 | |
|     {
 | |
|       name: 'Unhandled Promise Rejection',
 | |
|       message: 'ReferenceError: Cannot access uninitialized variable.',
 | |
|       stack: `Unhandled Promise Rejection: ReferenceError: Cannot access uninitialized variable.
 | |
|     at setDiagnosticsForCurrentErrors (http://localhost:3000/src/lang/KclSingleton.ts:90:18)
 | |
|     at kclErrors (http://localhost:3000/src/lang/KclSingleton.ts:82:40)
 | |
|     at safeParse (http://localhost:3000/src/lang/KclSingleton.ts:150:9)
 | |
|     at unknown (http://localhost:3000/src/lang/KclSingleton.ts:113:32)`,
 | |
|       foundInSpec:
 | |
|         'e2e/playwright/testing-segment-overlays.spec.ts angledLineToX',
 | |
|       project: 'webkit',
 | |
|     },
 | |
|     {
 | |
|       name: 'Unhandled Promise Rejection',
 | |
|       message: 'sketch not found',
 | |
|       stack: `Unhandled Promise Rejection: sketch not found
 | |
|     at unknown (http://localhost:3000/src/machines/modelingMachine.ts:911:49)`,
 | |
|       foundInSpec:
 | |
|         'e2e/playwright/testing-selections.spec.ts Deselecting line tool should mean nothing happens on click',
 | |
|       project: 'webkit',
 | |
|     },
 | |
|     {
 | |
|       name: 'Unhandled Promise Rejection',
 | |
|       message:
 | |
|         'engine error: [{"error_code":"bad_request","message":"Cannot set the camera position with these values"}]',
 | |
|       stack:
 | |
|         'Unhandled Promise Rejection: engine error: [{"error_code":"bad_request","message":"Cannot set the camera position with these values"}]',
 | |
|       foundInSpec:
 | |
|         'e2e/playwright/testing-camera-movement.spec.ts Zoom should be consistent when exiting or entering sketches',
 | |
|       project: 'webkit',
 | |
|     },
 | |
|     {
 | |
|       name: 'SecurityError',
 | |
|       stack: `SecurityError:  Failed to read the 'localStorage' property from 'Window': Access is denied for this document.
 | |
|      at <anonymous>:13:5
 | |
|      at <anonymous>:18:5
 | |
|      at <anonymous>:19:7`,
 | |
|       message: `Failed to read the 'localStorage' property from 'Window': Access is denied for this document.`,
 | |
|       project: 'Google Chrome',
 | |
|       foundInSpec: 'e2e/playwright/basic-sketch.spec.ts',
 | |
|     },
 | |
|     {
 | |
|       name: '  - internal_engine',
 | |
|       stack: `
 | |
| `,
 | |
|       message: `Nothing to export`,
 | |
|       project: 'Google Chrome',
 | |
|       foundInSpec: 'e2e/playwright/regression-tests.spec.ts',
 | |
|     },
 | |
|     {
 | |
|       name: 'SyntaxError',
 | |
|       stack: `SyntaxError: Unexpected end of JSON input
 | |
|     at crossPlatformFetch (http://localhost:3000/src/lib/crossPlatformFetch.ts:34:31)
 | |
|     at async sendTelemetry (http://localhost:3000/src/lib/textToCad.ts:179:3)`,
 | |
|       message: `Unexpected end of JSON input`,
 | |
|       project: 'Google Chrome',
 | |
|       foundInSpec: 'e2e/playwright/text-to-cad-tests.spec.ts',
 | |
|     },
 | |
|     {
 | |
|       name: '{"kind"',
 | |
|       stack: ``,
 | |
|       message: `engine","sourceRanges":[[0,0,0]],"msg":"Failed to wait for promise from engine: JsValue(\\"Force interrupt, executionIsStale, new AST requested\\")"}`,
 | |
|       project: 'Google Chrome',
 | |
|       foundInSpec: 'e2e/playwright/testing-settings.spec.ts',
 | |
|     },
 | |
|     // TODO: fix this error in the code
 | |
|     {
 | |
|       name: 'TypeError',
 | |
|       message: "Cannot read properties of undefined (reading 'length')",
 | |
|       stack: '',
 | |
|       project: 'Google Chrome',
 | |
|       foundInSpec: '', // many tests are impacted by this error
 | |
|     },
 | |
|     // TODO: fix this error in the code
 | |
|     {
 | |
|       name: 'ReferenceError',
 | |
|       message: '_testUtils is not defined',
 | |
|       stack: '',
 | |
|       project: 'Google Chrome',
 | |
|       foundInSpec: 'e2e/playwright/snapshot-tests.spec.ts',
 | |
|     },
 | |
|     // TODO: fix this error in the code
 | |
|     {
 | |
|       name: 'TypeError',
 | |
|       message: 'Failed to fetch',
 | |
|       stack: '',
 | |
|       project: 'Google Chrome',
 | |
|       foundInSpec: 'e2e/playwright/snapshot-tests.spec.ts',
 | |
|     },
 | |
|     // TODO: fix this error in the code
 | |
|     {
 | |
|       name: 'ReferenceError',
 | |
|       message: 'originalCode is not defined',
 | |
|       stack: '',
 | |
|       project: 'Google Chrome',
 | |
|       foundInSpec: 'e2e/playwright/onboarding-tests.spec.ts',
 | |
|     },
 | |
|     // TODO: fix this error in the code
 | |
|     {
 | |
|       name: 'ReferenceError',
 | |
|       message: 'createNewVariableCheckbox is not defined',
 | |
|       stack: '',
 | |
|       project: 'Google Chrome',
 | |
|       foundInSpec: 'e2e/playwright/testing-constraints.spec.ts',
 | |
|     },
 | |
|   ]
 | |
| 
 | |
|   const cleanString = (str: string) => str.replace(/[`"]/g, '')
 | |
|   const foundItem = whitelist.find(
 | |
|     (item) =>
 | |
|       cleanString(exception.name) === cleanString(item.name) &&
 | |
|       cleanString(exception.message).includes(cleanString(item.message))
 | |
|   )
 | |
| 
 | |
|   return foundItem !== undefined
 | |
| }
 |