From 89d1f7f3d3dfaac335913e29fd87e5051a774d41 Mon Sep 17 00:00:00 2001 From: Kurt Hutten Date: Fri, 21 Mar 2025 13:13:26 +1100 Subject: [PATCH] fix resize (#5921) * fix resize * assert stream dimensions --- e2e/playwright/editor-tests.spec.ts | 33 ++++--- e2e/playwright/regression-tests.spec.ts | 93 +++++++++++++++++- ...ld-be-stable--XZ-1-Google-Chrome-linux.png | Bin 75334 -> 75333 bytes e2e/playwright/test-utils.ts | 20 ++-- e2e/playwright/testing-settings.spec.ts | 3 +- src/hooks/useSetupEngineManager.ts | 7 +- 6 files changed, 124 insertions(+), 32 deletions(-) diff --git a/e2e/playwright/editor-tests.spec.ts b/e2e/playwright/editor-tests.spec.ts index 6f6df4882..161c2e827 100644 --- a/e2e/playwright/editor-tests.spec.ts +++ b/e2e/playwright/editor-tests.spec.ts @@ -1,12 +1,7 @@ import { test, expect } from './zoo-test' import fsp from 'fs/promises' import { uuidv4 } from 'lib/utils' -import { - darkModeBgColor, - darkModePlaneColorXZ, - executorInputPath, - getUtils, -} from './test-utils' +import { executorInputPath, getUtils, TEST_COLORS } from './test-utils' import { join } from 'path' @@ -1163,7 +1158,8 @@ test.describe('Editor tests', { tag: ['@skipWin'] }, () => { await u.waitForPageLoad() await expect .poll( - async () => locationToHavColor(notTheOrigin, darkModePlaneColorXZ), + async () => + locationToHavColor(notTheOrigin, TEST_COLORS.DARK_MODE_PLANE_XZ), { timeout: 5000, message: 'XZ plane color is visible', @@ -1184,16 +1180,23 @@ test.describe('Editor tests', { tag: ['@skipWin'] }, () => { await test.step(`Verify that we see the imported geometry and no errors`, async () => { await expect(errorIndicators).toHaveCount(0) await expect - .poll(async () => locationToHavColor(origin, darkModePlaneColorXZ), { - timeout: 3000, - message: 'Plane color should not be visible', - }) + .poll( + async () => + locationToHavColor(origin, TEST_COLORS.DARK_MODE_PLANE_XZ), + { + timeout: 3000, + message: 'Plane color should not be visible', + } + ) .toBeGreaterThan(15) await expect - .poll(async () => locationToHavColor(origin, darkModeBgColor), { - timeout: 3000, - message: 'Background color should not be visible', - }) + .poll( + async () => locationToHavColor(origin, TEST_COLORS.DARK_MODE_BKGD), + { + timeout: 3000, + message: 'Background color should not be visible', + } + ) .toBeGreaterThan(15) }) } diff --git a/e2e/playwright/regression-tests.spec.ts b/e2e/playwright/regression-tests.spec.ts index f59f43136..7ac8c0ac4 100644 --- a/e2e/playwright/regression-tests.spec.ts +++ b/e2e/playwright/regression-tests.spec.ts @@ -2,9 +2,15 @@ import { Page } from '@playwright/test' import { test, expect } from './zoo-test' import path from 'path' import * as fsp from 'fs/promises' -import { getUtils, executorInputPath } from './test-utils' +import { + getUtils, + executorInputPath, + TEST_COLORS, + TestColor, +} from './test-utils' import { TEST_CODE_TRIGGER_ENGINE_EXPORT_ERROR } from './storageStates' import { bracket } from 'lib/exampleKcl' +import { reportRejection } from 'lib/trap' test.describe('Regression tests', { tag: ['@skipWin'] }, () => { // bugs we found that don't fit neatly into other categories @@ -315,6 +321,89 @@ extrude001 = extrude(sketch001, length = 50) } ) + test( + 'window resize updates should reconfigure the stream', + { tag: '@skipLocalEngine' }, + async ({ scene, page, homePage, cmdBar, toolbar }) => { + await page.addInitScript( + async ({ code }) => { + localStorage.setItem( + 'persistCode', + `@settings(defaultLengthUnit = mm) +sketch002 = startSketchOn('XY') +profile002 = startProfileAt([72.24, -52.05], sketch002) + |> angledLine([0, 181.26], %, $rectangleSegmentA001) + |> angledLine([ + segAng(rectangleSegmentA001) - 90, + 21.54 + ], %) + |> angledLine([ + segAng(rectangleSegmentA001), + -segLen(rectangleSegmentA001) + ], %) + |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) + |> close() +extrude002 = extrude(profile002, length = 150) +` + ) + ;(window as any).playwrightSkipFilePicker = true + }, + { code: TEST_CODE_TRIGGER_ENGINE_EXPORT_ERROR } + ) + + const websocketPromise = page.waitForEvent('websocket') + await page.setBodyDimensions({ width: 500, height: 500 }) + + await homePage.goToModelingScene() + const websocket = await websocketPromise + + await scene.connectionEstablished() + await scene.settled(cmdBar) + await toolbar.closePane('code') + + // expect pixel color to be background color + const offModelBefore = { x: 446, y: 250 } + const onModelBefore = { x: 422, y: 250 } + const offModelAfter = { x: 692, y: 262 } + const onModelAfter = { x: 673, y: 266 } + + await scene.expectPixelColor( + TEST_COLORS.DARK_MODE_BKGD, + offModelBefore, + 15 + ) + const standardModelGrey: TestColor = [100, 100, 100] + await scene.expectPixelColor(standardModelGrey, onModelBefore, 15) + + await test.step('resize window and expect "reconfigure_stream" websocket message', async () => { + // note this is a bit low level for our tests, usually this would go into a fixture + // but it's pretty unique to this resize test, it can be moved/abstracted if we have further need + // to listen to websocket messages + await Promise.all([ + new Promise((resolve) => { + websocket + // @ts-ignore + .waitForEvent('framesent', (frame) => { + frame.payload + .toString() + .includes( + '"type":"reconfigure_stream","width":1000,"height":500' + ) && resolve(true) + }) + .catch(reportRejection) + }), + page.setBodyDimensions({ width: 1000, height: 500 }), + ]) + }) + + await scene.expectPixelColor( + TEST_COLORS.DARK_MODE_BKGD, + offModelAfter, + 15 + ) + await scene.expectPixelColor(standardModelGrey, onModelAfter, 15) + } + ) test( 'when engine fails export we handle the failure and alert the user', { tag: '@skipLocalEngine' }, @@ -534,7 +623,7 @@ extrude001 = extrude(sketch001, length = 50) // Constants and locators const planeColor: [number, number, number] = [170, 220, 170] - const bgColor: [number, number, number] = [27, 27, 27] + const bgColor: [number, number, number] = TEST_COLORS.DARK_MODE_BKGD const middlePixelIsColor = async (color: [number, number, number]) => { return u.getGreatestPixDiff({ x: 600, y: 250 }, color) } diff --git a/e2e/playwright/snapshot-tests.spec.ts-snapshots/extrude-on-default-planes-should-be-stable--XZ-1-Google-Chrome-linux.png b/e2e/playwright/snapshot-tests.spec.ts-snapshots/extrude-on-default-planes-should-be-stable--XZ-1-Google-Chrome-linux.png index c78594e176be7fa3e02b80ef88c6916734689809..eaa45b1b9fe4afaa54b7f2141a4a0e55c48cb637 100644 GIT binary patch delta 35418 zcmZ6ybx>7bya$Tpp+UMkr5lu%kVYB=B&4KUYSY~z-Q7qdB^}Zs&5@Fj?&fX$-Fx4> zcm7}om|17D-X)lz|=&hR965XZ6mi$f88{q(0%4}v(DS%bmTOa**oHO`XzkiAdXbj z=l*1XLW?7ZaMe)l^d#8i`rFS9(H9k-A2!?hF-z^N^J8ckQVdenuA$?Y4>iEue!g3z z_VuPqr>9k>a&D(>v+!z?Xrji9PA1#Ygijdi9|N~1C#ZVnw$0G%zh84(7A!H}JVh1G z3ff)HCsSl|+)+Sj0;|Yo|K=_QkLouU-b(xh9zA*tDF%UEpfxaAM8|cR5L=MZb7!b_ zV|W=2%gTax(3Wm^5ZN>``6Do*{;@3p}XV zbz)5lNiGu`8{4Z_>2JO`N=qYV$$qn45mL$?wS#-#i9wZ}b?(`ba+vQ!N7rtiLEPgC z@fIa}r4+FE~46iAvZQv8{vs|p4{mtY|pR6i`{Bh&^1@tW-Ej@N~W-@%q ztJC3i;|GVd>V36RQBl$2v~3)6e7-x4iqGP{|83y%2nuXxx^i=8BgbuCL-FNGm~q%F&~oWS_>;T%15^jT(4?*WjyEyq6ssY329(H*czUEyX}v- z{B;?Ps>m0pqAA_><7SuXTgXq65&Vz=`3Ln63!QUx6rOw6fX@=fFH&Kf#zq&fwzVDf zeC{a3r>B8THc?K~dD+541PIa~8&`%^?2Mo3F6BeBd|B7b%#2h7zVP+$07!1T=atXR zR`Pz8pwC+RyFoXf&!7L!83Ivi?<2y)4STcx1_pxE8=WZzp`&+IR#KvlK_d~`q+lP(zS@UA-Bbe< z!mjHJUjUN$gopFCZM;-z0i$mCj^ak!mG3TpHBSc@8$Qof=|^CBob(Y8nMYHIl8Y93 z*O9$;-JkykC+c%|&_sq2ecnxA=oN>(m+7|p1w2sTc;o4QTlD&c@H8wHkL48YeNJWN zL6Vlim#rkNUMLG?!jc`Kw)2BnUEkyEpW3L_SAohMRHEG7C3jzd*`tW6Jj_eQ7*Q>A z#a(h#Ta%ToX-ZludRFOMqU=hvB&-1_@Sur*WB#ppD2xEXR@)hrGE%rcq1fQ9H_^92v_C=!Jihr{~Ygdt~e zH={`f9ghs2G_1q~>TLg(7UMtN1J#e$4^?&JqFlD?DI%~81AT-~&RU0n2%8ycOgN85 z{n7_-57%_fiB3I*z?C&VDfr{*_oM8XM`b)@)ty5*7oh|tL>gl;mpj;y7d;52TjniW9WP|X|~2-vzii4 z%)KPc7ZIJe!(RmN^xl~fqkib?2z=O=q3}-3%F4>lX1_@S%L|NuKTynaHT4>zZs8Z2%-|OS=-qeHrwaQ^(?>O9rQ8wkr?9$RC!PqRrfhz z5^3I+CG$~nTHDMSIZWt3U#N{~Lj9X?6=l%*;H*zm_Y;U-*;SGcUjXj!M}b=uD%?+8 zvB-s|{9#yDHb)jVN7u$`H+N4di^fhi%ihuK-S;5_u1EM^&ayi!8d}U&xXyubsQb}9 zI$O;6!de&~(W;@-<^!(`*LxFe2_@|G$Vi@r1G&o>1PRni_(7xsO4E_AlrA}7L_X%! zv*l0C0F(=g&f{6ak)p?8Er$Jq#ynKnXtp*sD@}HWU=eIY0c)|6D(-@1uzuP095XH> zM!~pgYmhU1XG2gVWp_uOJr%XjWp@xN3BPT|Yqvw;tL2TWfBW72;+y}(_L+vJrts}N zX+)p#H*L9S(ycd@g@qRqy53Q z>RNsSJdv)06DtJPh}?>Vm+Zx7X~mGY?yS_me#yj~5r&ul6cTLW(y695}IuPE@z8 zSYaJDt*8FxBc3bG4?>3-7+yK_T`{CpCC}aOf4Z8?AM8bcph8(26%V6yUdhKG7!QLj`ysyZIE} z=abvn02q*lA4W#{z=(wD#`*>@m`0)ry^k zHKN{|W5vI=pjVuaN7hlF!2ATfAIt+Me!~HK40=1$D zy$42+;2vgVoi1_`Nd_(y6(hqV_*Q*-ev~5?k+MD6!2G$$=kD~d@zA`r+t8C6=QYeu zCL%DIu_)0)L7XS6y6txjoWN`y!~b(hJjKq*)-Uk)>ze36wPVXe`Cq>PM(d?SL@|i z=4<{O0xWQwA$SrPxqZf?BO@hc>nXoClSf9-q#LLx$y-;*0SXGRe3I@(mH5wEX>g=T z=eHazzEEC%&D>og3Y~d`vSY?6ev0(aKO$c-&X4rjNMVh>v9rDV`H-L8#(w17u(jK# zH<0tt&HcHZ{s=!b1~{uJu-)|i=&$FQf)4$NWl zJ;#<|`IvX}d{`nJdlQ7Kl)+AIfg|`_>rasGK|fp!x>}3aaU}(L`E-7}RShluAf)a6 zg*paGEtPx4p?4I0wf56Rih_cIK9v&Ew8u>;sz;p zbDH%3ek=!fPD~(Qr^S(u+;EIuNa(h4sfd9Vaxt*oWBko_zNVwSJ@X-0PIboc>2|I- z%L9dKrp{dX-O}MLVN`!g3Sp+w+$S%I?D6djkENw0eKrE9pjln&Bjj{IRCHRHv!$iQ zVOI}8J*kUF7rJ?Kavm|8WIpG0QyS_d*;4_15){sF`nh#G{%SmKU|ZxOhJw$_dv7yr z!UkOh#$%82G1GS-k1Jk^2#3D+Y8JN|k#47dWMt&eA2WnmN+q0G3m#ThR?+)oI2*L^ zW#ybZt-$8y=GMdSuh`h4Rg=VkfWaeN$$oAXF4=`-jxmB}m5+EL45=6r25eq<4|P}I zv`9-!D@I2JZo)MUEd)^_W(1oZAZm@UzY?6YMZjPnYZwU9|UX-Byc53>-24zI; zg|ApbY!Ssvef@_%0>cTsIam@%$ywAj#4n+%i2Q|5!tWvuKwy9T;UFdl(GQC{mYuow zF{o;Ot@_FAiF9%pFo4zX)Bz3D$l2|sq#)^i9 zq$=jkR|h7`A{{cdO3FDuV!XBl8QveyBGu*_4XP4tW>X39D;ws`TCsm>{4ao9@-RN?0ZA8 z%QY*%-|m&`>FSC+-Jc12UfNfYU^&iY4yst=$sKlC;TaG%Fn#n)$Y*#5^0+EUF&(*9saWW>)UXT$~BNAm=f>TU|PM!VaM;Diir^l<# zvNC2N(XUQ$T&gOJj#G<^-_6Ifu2wx0Y)XiTmhG0_`&l@{kF8xqrbGrPDk{>^(Q%uN z_$FkR5Ch=`6luxp;S$$41;;WJFwL+=p<-j4=LN>di#6hwPuYk<)>v*heUjU52a64! z{7$Y6rO2~vGFNw(n^(M4s04a?dY#wn5xJ5f22P{A%`bL6kJ_~i460_Wh!n+#zGiJ6 zdwfqXfxZi%M#7ULF;MOh$ykvw^gL(?LM4bM7Y2x#kzatt|Emg$#AUh+qz`5%_IFQe z4LGF0iFk5U%uq@q)?ja-b4|V7watTiU+KHJ@Jh%QPoEG4L~djVel2?(owT#>M+O7D z)$K^c=l&YRH%WunPkN7r~Yv#_LzX-ubzf%JN zv$`++kwlb`e-DARWb8G>K(&mFr67g_3qujf#Tv}N;|AMGy2c==n8+Qa;!m8x`x$>l z(Rph)>734>T5H5-{+0uRpU0!CtJ?u?1eIiPB-s9M&v!QlVg@v+iu-Y}R=pgRA~hJj zlAv(`UfoF;7rVvTA~%}}U?2cF|6U(w79kfZIvfuiXnJxRH&SJn8+>rT4RG7%O_D?C z^->X7D4C{9&oj5ywNtBn{g)TVR`#8u-qnTqdE5{`-c8#otEjDtrBocd$e`43l)y?v zOGU;H+xRbe2SdapaT|$gr{B7PecAKM*6-TKE|u1r&RAalC)h^-W|FnX}>wYn-#ct3>SRD2YfdmxQ3--?L zs5vq?mBI*_lVnwKZN-F~cfh=hCgDGv)iSiPvU)kTZ3-pG_StwnCMJN8sD^`*9XZ!W zZzL@(ZDUiJ#!d?+Jtcy$(utO5>hETtT&p8rJXr)Dh$Qy(Zn}PZVx=PPoi}NPtyL$2 zKuuFHZ858+mVY`htFBews6BLz5%O?eieu8Rf46bZ63!?057ZW``<%L0&U#22}op`X}U?3%0WGE(r8SABUUlc``A@Y6(u)%AybTi|jPu zdtfo@mp9N$sX{vCEpO3@8_$aEBQ^ zN!}fwl;b2k#X4zts5>W2x76})P(pEooV#^(jpdEdaA-H74ANH^__Yy}~Nf>lk&3TgH}&aJ*Olh!BXfeJ?dR_uAPt=@(qu$KSa6AmSbS|BbV$R}Se>_T=N4P=A&Sp#R za9D{qL3$E#wANMUA!DVXsr#0j)m|8k>S8H8b>R^Zs3j@#5ffI6c)u|Z%~NI5tL~UAGjI49)$%^2;PIESZkLC8eQ-$uD zYjxuydg|)56Tu-q?}8Wxxqa$;0f30X$v~c6QAFOSI)+rxm@j>MB$Z|x?-}*ZP`dZM z%+QBdHy%80ODLqvO~6jBT-Np29|<}7djC-R^%O_ASb^lGy03Ij>1DI~2i@Oad{UNta3M;)Wkss z>iXA+54e-AA4>9h(r5_Mqjl1%-tGEjPg%KO$I%z}bgjM*nJ%5Q$b;+>@`$0sYSEu> zTVC#q>kduCAW(-2R)rGdei8hlQa&qkHo|@OXH*jM%yEF=6{spJJALghTi~9+awec* zY+puBcspU$;PZI1-RgQECnxtG&{ci^{$=W$k<#fM7^>uPf*t6e!$0JoNm!{$vO)~V2b^sTOpeghvh zH8Y*!Z(vVdZ3dw=lWc8nKAB88lBc2hgENim=a9NqPFPU`?OMZt34lT2-s7|q6Kyaz zz%VoMbm)SA?df))&yAb-L`@`nZfh@;Cv`qTI!%E%s^7LL%nR%#v1q%OHHs2Sr8FH5 z$qKxTBL2SNKhAe1O-|PP_*dO&BzDs6Iu>fyfF_atb>0;BE_%b?C&*G7Ti~3s((cJ` ziKmn;qW^;m*8~q7=J6A#XDN#{21^-Y$X@?iUT(8rlSndP1K(4OSiF)--II-j-dx+j zWy`X)Qt=?@`lFXnxWYU6VUqMW9vS1?Hp}e~gFnyS*i^zM^9zs(=jCBbedEnt`a4Sr z6wq0BM<~fiybZ*lsz7d)Nn^1k@G1NC>v4F^IB;Sju$RAIzq9(}z7$_RfBIWx6$pGf z?b-CT^fJ@F`utHR+Hlv^^)TuAqI`VU;4cjMP&&~OWym}Dr7|PHk(z@`{MzciNGUTs zO1ymbc9b9b+cwXd&|5JO8)_GP=5;~*oS+(&+YiQ4fgN+Zg4q<>I;g}Q4~`2v zBH=XF3$>sAjHLQ?Xo7F+TL!;Gb*^Vljgz^`!LeO-y0Prfp#8x$V8JPi(>X%4;eLgN zUD(Oz=T)~A7FGSWM5TDKC#|P@fs*-*6+`h=QFiTjp^B>Lk6rG@ZXEmA!cNQ48RnL-GV%)W^3?=@wffOhQBLr&@FHeUJq@eDzP!|W5sLc z9&1of%Mh(NU`sTw>_ifA;{w89gux627X2*optwTXirm@RDXDrxCdcV;Q%UxC2aO&7 z3Gm^h4{*E9DFftur{zOUR!ryeYCT1UyyR0B_~ffko5#yHG}6^TslZw16pigLf2aFE zLXXVozGz9`mdD-oTD%#z2tPaB#dwc2VZ$PR^5>H{Lo1sDNUoC&D4i&gepL$(mx4oHOVu&5JV&s` zjvHgpagKx%W~`HYyKG483!={4T%(^~S)I1W^xHjLR1CPmZTTUZmh?)CO}mD2uzW0? z|0s+h3!;QrDvO5Lr)v@Y;rQ2(8^Kc97!w{xibAt1;24udWLR|{E8=)&(|P96PSUCI zFiKKDX&)r{%VF19C{rnfV!{<&O0{_f!Z%GQk}J!~&>4i5O}u$t8lRA`w75uUnMcBB zT~g7;Ln$*-f_TzNx_M8GJ?N$Zj{x+6pA~Q-2I=0;?Os=&h(3h`yXL7{S7*|!l*Va7i@{60rVYeCq8F&GvTZG=H&s6o- zufbTlojwn7G&1mwWF-QdO9jUY7(>jeN~DE3M^%M|pRNv9czJn21P=6Q1X-7>#GR{- z#a+Qp?+K1-2))1)^#q62yQ5A39L@h5kp0*MT&XudT<;>eMexqF!ocJtbZKhB9+=X? zYi$bLu(TLuDizQDz3^yX(>nL?_VRio!N|%wYSqA|Q~OpMo$F)F=k36UGXGdNY3&JyB@-4rhnUHu>3k0-SIKi_d{q$O>XXs^gye&x6h?E z$CnapEf7@r{Vw10V7b)140PsQN10$^9zwLCp`p^!QUOKhp?EsY@?Oyd&i;n8OnRM| zwFGaG>~-C-YGd30s0O(Gu7}Gv3+CBz=&}gk!%l&g0b`-i+Sj8Ta?*m;bOd?4Ym@mh z++18aD~!*S1D4qEPOfBI{_0${;nS2nJ5xO!cp$G(UDxR(al+LhT|>B^_BF3wd9-I8 z2I1h~m~f>!3z7K*9JiLZ_ZB1>!0(V;o zY*b+4LcJ69g&AuLYQBAQ0Q-~5yXWx3fd7N_Opb%oiF`5}*}EF&-KkQwVv(z5r!t$D z-~mMR;Ojj4ULx;#_ApeYOM0Ak|N zpHevxbX4iLYF21>HKHJpcKc2NGP~?IRWI!!3&{=DtoTh`ZAZhprQY^`NOK_k{w$33^!R>fVNX?OB=^oGUt_Bmti9-v7+Bos+ zD#g>PxS#44t~Cjuyy|b(GbM@r;)198l|ozI+N6K`{#`dxL-r6zt&3sImSmjB?yr^{ zbk|5vOT%Z?t+!w6?(UY*FvNL2_Y~jH5CD{n0+2A{WiZI!G`k(Gf^yg@h)u!|E9|V_?CAq89vRMF6pXlkZUgKv0eTuSZ6W0nNv}+e(y{xS$cJeoBDdV&9{gCR z!4@K3ITRxKk`Qo60H1&#>P2IXxBg)7nucu;84}g5seWk~9r`5fbMG!K-Jil~g6kCo zwhCV{0z`DDyP z^waMTNM^+amjceer@n9fis)QAJt#O|b;BIgwCqzIDjkm=?DU>S#NK9>boAfdMH<*V zmzN8V@z^Xpipk>J*ua)vXC<2=!FNd9N zIAHernpdk(^oyZ^mGSwm)z2rr#=8&ts3Nva4HS!=+x_Vgzd#ynxCs*Y5*_neXDsG! zACh5o^A+`+l14F+2l1U}Y!x|e!11nF$3f`<=~QSvmL+Wbx=}ZnM&)H?!I%_Ex4d)4kPmN7Y`uqrs$))mZ7yO4yb;2{PDg@avi%tcutLb_~15Z5MZuZ%S zZo=({T#!(^^N>!ndbSc%}vY9~*9lGrHONlc2zPF}wUY zFRRz75bMc_<5LG&{s4Z8f@;|^A(j$H(f0&7$@yXw+22E|0sFRj^}@2BC8Sqqpji(h zum1FZqF#_N{XJKqX8ZH~4|Lgg<;RyxcIJ8j+H_1LnV&zI2N^IiX8Y6tewe;D`G)=dYTwZ~W&2qYqLCrUN$KfsaTPG+ z4|ZIp2sx;0jkxr>u<(`=#Vh@`PXIBZL?1Pe3NW4y#)S}V~1gRSS
|xq*VvO1@+jdG;c=L^aei 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 af7B1m^CAso3ONz;`CL}@SryDI=>Gx93{|H9 delta 35446 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

Y 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 { return text.replace(/\s+/g, '') } -type TestColor = [number, number, number] -export const TEST_COLORS = { - WHITE: [249, 249, 249] as TestColor, - YELLOW: [255, 255, 0] as TestColor, - BLUE: [0, 0, 255] as TestColor, +export type TestColor = [number, number, number] +export const TEST_COLORS: { [key: string]: TestColor } = { + WHITE: [249, 249, 249], + YELLOW: [255, 255, 0], + BLUE: [0, 0, 255], + DARK_MODE_BKGD: [27, 27, 27], + DARK_MODE_PLANE_XZ: [50, 50, 99], } as const export const PERSIST_MODELING_CONTEXT = 'persistModelingContext' @@ -50,14 +52,6 @@ export const commonPoints = { num3: -2.44, } as const -/** A semi-reliable color to check the default XZ plane on - * in dark mode in the default camera position - */ -export const darkModePlaneColorXZ: [number, number, number] = [50, 50, 99] - -/** A semi-reliable color to check the default dark mode bg color against */ -export const darkModeBgColor: [number, number, number] = [27, 27, 27] - export const editorSelector = '[role="textbox"][data-language="kcl"]' type PaneId = 'variables' | 'code' | 'files' | 'logs' diff --git a/e2e/playwright/testing-settings.spec.ts b/e2e/playwright/testing-settings.spec.ts index 3ea8003b5..7954c7ffe 100644 --- a/e2e/playwright/testing-settings.spec.ts +++ b/e2e/playwright/testing-settings.spec.ts @@ -6,6 +6,7 @@ import { executorInputPath, createProject, tomlToSettings, + TEST_COLORS, } from './test-utils' import { SettingsLevel } from 'lib/settings/settingsTypes' import { SETTINGS_FILE_NAME, PROJECT_SETTINGS_FILE_NAME } from 'lib/constants' @@ -811,7 +812,7 @@ test.describe('Testing settings', () => { // Selectors and constants const darkBackgroundCss = 'oklch(0.3012 0 264.5)' const lightBackgroundCss = 'oklch(0.9911 0 264.5)' - const darkBackgroundColor: [number, number, number] = [27, 27, 27] + const darkBackgroundColor = TEST_COLORS.DARK_MODE_BKGD const lightBackgroundColor: [number, number, number] = [245, 245, 245] const streamBackgroundPixelIsColor = async ( color: [number, number, number] diff --git a/src/hooks/useSetupEngineManager.ts b/src/hooks/useSetupEngineManager.ts index b1e6ae0b0..5092bc8bf 100644 --- a/src/hooks/useSetupEngineManager.ts +++ b/src/hooks/useSetupEngineManager.ts @@ -93,7 +93,12 @@ export function useSetupEngineManager( engineCommandManager.settings = settings const handleResize = deferExecution(() => { - engineCommandManager.handleResize(engineCommandManager.streamDimensions) + engineCommandManager.handleResize( + getDimensions( + streamRef?.current?.offsetWidth ?? 0, + streamRef?.current?.offsetHeight ?? 0 + ) + ) }, 500) const onOnline = () => {