Compare commits
	
		
			5 Commits
		
	
	
		
			nrc-warn-a
			...
			kurt-test-
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 34f5bccd6a | |||
| bf4c666403 | |||
| b769aeffe8 | |||
| c158ffcb79 | |||
| b5e4b7cf2b | 
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -102,6 +102,29 @@ export async function getUtils(page: Page) { | ||||
|   const cdpSession = | ||||
|     browserType !== 'chromium' ? null : await page.context().newCDPSession(page) | ||||
|  | ||||
|   let click00rCenter = { x: 0, y: 0 } | ||||
|   const click00 = (x: number, y: number) => | ||||
|     page.mouse.click(click00rCenter.x + x, click00rCenter.y + y) | ||||
|   let click00rLastPos = { x: 0, y: 0 } | ||||
|  | ||||
|   // The way we truncate is kinda odd apparently, so we need this function | ||||
|   // "[k]itty[c]ad round" | ||||
|   const kcRound = (n: number) => Math.trunc(n * 100) / 100 | ||||
|  | ||||
|   // To translate between screen and engine ("[U]nit") coordinates | ||||
|   // NOTE: these pretty much can't be perfect because of screen scaling. | ||||
|   // Handle on a case-by-case. | ||||
|   const toU = (x: number, y: number) => [ | ||||
|     kcRound(x * 0.0854), | ||||
|     kcRound(-y * 0.0854), // Y is inverted in our coordinate system | ||||
|   ] | ||||
|  | ||||
|   // Turn the array into a string with specific formatting | ||||
|   const fromUToString = (xy: number[]) => `[${xy[0]}, ${xy[1]}]` | ||||
|  | ||||
|   // Combine because used often | ||||
|   const toSU = (xy: number[]) => fromUToString(toU(xy[0], xy[1])) | ||||
|  | ||||
|   return { | ||||
|     waitForAuthSkipAppStart: () => waitForPageLoad(page), | ||||
|     removeCurrentCode: () => removeCurrentCode(page), | ||||
| @ -145,11 +168,15 @@ export async function getUtils(page: Page) { | ||||
|         y: bbox.y - angleYOffset, | ||||
|       } | ||||
|     }, | ||||
|     getAngle: async (locator: string) => { | ||||
|       const overlay = page.locator(locator) | ||||
|       return Number(await overlay.getAttribute('data-overlay-angle')) | ||||
|     }, | ||||
|     getBoundingBox: async (locator: string) => | ||||
|       page | ||||
|         .locator(locator) | ||||
|         .boundingBox() | ||||
|         .then((box) => ({ x: box?.x || 0, y: box?.y || 0 })), | ||||
|         .then((box) => ({ ...box, x: box?.x || 0, y: box?.y || 0 })), | ||||
|     doAndWaitForCmd: async ( | ||||
|       fn: () => Promise<void>, | ||||
|       commandType: string, | ||||
| @ -217,6 +244,51 @@ export async function getUtils(page: Page) { | ||||
|  | ||||
|       cdpSession?.send('Network.emulateNetworkConditions', networkOptions) | ||||
|     }, | ||||
|     expectCodeToBe: async (str: string) => { | ||||
|       await expect(page.locator('.cm-content')).toHaveText(str) | ||||
|       await page.waitForTimeout(100) | ||||
|     }, | ||||
|     click00rSetCenter: (x: number, y: number) => { | ||||
|       click00rCenter = { x, y } | ||||
|     }, | ||||
|     click00r: (x?: number, y?: number) => { | ||||
|       // reset relative coordinates when anything is undefined | ||||
|       if (x === undefined || y === undefined) { | ||||
|         click00rLastPos.x = 0 | ||||
|         click00rLastPos.y = 0 | ||||
|         return | ||||
|       } | ||||
|  | ||||
|       const ret = click00(click00rLastPos.x + x, click00rLastPos.y + y) | ||||
|       click00rLastPos.x += x | ||||
|       click00rLastPos.y += y | ||||
|  | ||||
|       // Returns the new absolute coordinate if you need it. | ||||
|       return ret.then(() => [click00rLastPos.x, click00rLastPos.y]) | ||||
|     }, | ||||
|     toSU, | ||||
|     wiggleMove: async ( | ||||
|       x: number, | ||||
|       y: number, | ||||
|       steps: number, | ||||
|       dist: number, | ||||
|       ang: number, | ||||
|       amplitude: number, | ||||
|       freq: number | ||||
|     ) => { | ||||
|       const tau = Math.PI * 2 | ||||
|       const deg = tau / 360 | ||||
|       const step = dist / steps | ||||
|       for (let i = 0, j = 0; i < dist; i += step, j += 1) { | ||||
|         const y1 = Math.sin((tau / steps) * j * freq) * amplitude | ||||
|         const [x2, y2] = [ | ||||
|           Math.cos(-ang * deg) * i - Math.sin(-ang * deg) * y1, | ||||
|           Math.sin(-ang * deg) * i + Math.cos(-ang * deg) * y1, | ||||
|         ] | ||||
|         const [xr, yr] = [x2, y2] | ||||
|         await page.mouse.move(x + xr, y + yr, { steps: 2 }) | ||||
|       } | ||||
|     }, | ||||
|   } | ||||
| } | ||||
|  | ||||
|  | ||||
| @ -10,7 +10,7 @@ | ||||
|     "@fortawesome/react-fontawesome": "^0.2.0", | ||||
|     "@headlessui/react": "^1.7.19", | ||||
|     "@headlessui/tailwindcss": "^0.2.0", | ||||
|     "@kittycad/lib": "^0.0.63", | ||||
|     "@kittycad/lib": "^0.0.64", | ||||
|     "@lezer/javascript": "^1.4.9", | ||||
|     "@open-rpc/client-js": "^1.8.1", | ||||
|     "@react-hook/resize-observer": "^2.0.1", | ||||
|  | ||||
| @ -18,7 +18,7 @@ export default defineConfig({ | ||||
|   /* Retry on CI only */ | ||||
|   retries: process.env.CI ? 3 : 0, | ||||
|   /* Opt out of parallel tests on CI. */ | ||||
|   workers: process.env.CI ? 1 : 1, | ||||
|   workers: process.env.CI ? 2 : 1, | ||||
|   /* Reporter to use. See https://playwright.dev/docs/test-reporters */ | ||||
|   reporter: 'html', | ||||
|   /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ | ||||
|  | ||||
							
								
								
									
										39
									
								
								yarn.lock
									
									
									
									
									
								
							
							
						
						
									
										39
									
								
								yarn.lock
									
									
									
									
									
								
							| @ -1880,10 +1880,10 @@ | ||||
|   resolved "https://registry.yarnpkg.com/@juggle/resize-observer/-/resize-observer-3.4.0.tgz#08d6c5e20cf7e4cc02fd181c4b0c225cd31dbb60" | ||||
|   integrity sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA== | ||||
|  | ||||
| "@kittycad/lib@^0.0.63": | ||||
|   version "0.0.63" | ||||
|   resolved "https://registry.yarnpkg.com/@kittycad/lib/-/lib-0.0.63.tgz#cc70cf1c0780543bbca6f55aae40d0904cfd45d7" | ||||
|   integrity sha512-fDpGnycumT1xI/tSubRZzU9809/7s+m06w2EuJzxowgFrdIlvThnIHVf3EYvSujdFb0bHR/LZjodAw2ocXkXZw== | ||||
| "@kittycad/lib@^0.0.64": | ||||
|   version "0.0.64" | ||||
|   resolved "https://registry.yarnpkg.com/@kittycad/lib/-/lib-0.0.64.tgz#0cea0788cd8af4a8964ddbf7152028affadcb17f" | ||||
|   integrity sha512-qHyvNYKbhsfR5aXLFrdKrBQ4JI+0G0v096oROD3HatJ+AIzg5H0THmI+rMnQ9L4zx4U6n1A9gLi7ZQjSsZsleg== | ||||
|   dependencies: | ||||
|     node-fetch "3.3.2" | ||||
|     openapi-types "^12.0.0" | ||||
| @ -8234,16 +8234,7 @@ string-natural-compare@^3.0.1: | ||||
|   resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" | ||||
|   integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== | ||||
|  | ||||
| "string-width-cjs@npm:string-width@^4.2.0": | ||||
|   version "4.2.3" | ||||
|   resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" | ||||
|   integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== | ||||
|   dependencies: | ||||
|     emoji-regex "^8.0.0" | ||||
|     is-fullwidth-code-point "^3.0.0" | ||||
|     strip-ansi "^6.0.1" | ||||
|  | ||||
| string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: | ||||
| "string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: | ||||
|   version "4.2.3" | ||||
|   resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" | ||||
|   integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== | ||||
| @ -8316,14 +8307,7 @@ string_decoder@~1.1.1: | ||||
|   dependencies: | ||||
|     safe-buffer "~5.1.0" | ||||
|  | ||||
| "strip-ansi-cjs@npm:strip-ansi@^6.0.1": | ||||
|   version "6.0.1" | ||||
|   resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" | ||||
|   integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== | ||||
|   dependencies: | ||||
|     ansi-regex "^5.0.1" | ||||
|  | ||||
| strip-ansi@^6.0.0, strip-ansi@^6.0.1: | ||||
| "strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: | ||||
|   version "6.0.1" | ||||
|   resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" | ||||
|   integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== | ||||
| @ -9305,7 +9289,7 @@ workerpool@6.2.1: | ||||
|   resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" | ||||
|   integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== | ||||
|  | ||||
| "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": | ||||
| "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: | ||||
|   version "7.0.0" | ||||
|   resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" | ||||
|   integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== | ||||
| @ -9323,15 +9307,6 @@ wrap-ansi@^6.2.0: | ||||
|     string-width "^4.1.0" | ||||
|     strip-ansi "^6.0.0" | ||||
|  | ||||
| wrap-ansi@^7.0.0: | ||||
|   version "7.0.0" | ||||
|   resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" | ||||
|   integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== | ||||
|   dependencies: | ||||
|     ansi-styles "^4.0.0" | ||||
|     string-width "^4.1.0" | ||||
|     strip-ansi "^6.0.0" | ||||
|  | ||||
| wrap-ansi@^8.1.0: | ||||
|   version "8.1.0" | ||||
|   resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	