From e37d2b216a10821d0c62c3e7f1a6e116df29d858 Mon Sep 17 00:00:00 2001 From: Danila Poyarkov Date: Sat, 28 Feb 2026 08:39:19 +0300 Subject: [PATCH] Fix silent rendering crash, no-chrome test mode, error detection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fix this.this.selColor() typo in renderer (6 occurrences) — broke selection/handles rendering since the constants extraction refactor - Add preserveDrawingBuffer to WebGL surface for reliable screenshots - Add ?no-chrome URL param to hide panels/toolbar in tests - CanvasHelper collects pageerror + console.error, assertNoErrors() fails tests on any browser-side exception --- src/App.vue | 7 ++++--- src/composables/use-canvas.ts | 2 +- src/engine/renderer.ts | 12 ++++++------ tests/e2e/create-shapes.spec.ts | 3 ++- .../draw-and-delete-openpencil-darwin.png | Bin 20085 -> 15568 bytes .../draw-and-undo-openpencil-darwin.png | Bin 20059 -> 15568 bytes .../draw-ellipse-openpencil-darwin.png | Bin 19327 -> 22813 bytes .../draw-rectangle-openpencil-darwin.png | Bin 20044 -> 18367 bytes ...ctangle-then-move-it-openpencil-darwin.png | Bin 19399 -> 18518 bytes .../empty-canvas-openpencil-darwin.png | Bin 19395 -> 15568 bytes tests/helpers/canvas.ts | 13 +++++++++++++ 11 files changed, 26 insertions(+), 11 deletions(-) diff --git a/src/App.vue b/src/App.vue index 979599f81..d27ebc1e1 100644 --- a/src/App.vue +++ b/src/App.vue @@ -18,6 +18,7 @@ useEventListener(document, 'wheel', (e: WheelEvent) => { }, { passive: false }) const params = useUrlSearchParams('history') +const showChrome = !('no-chrome' in params) if (!('test' in params)) { createDemoShapes(store) } @@ -26,12 +27,12 @@ if (!('test' in params)) { diff --git a/src/composables/use-canvas.ts b/src/composables/use-canvas.ts index a076ac93a..c32f826d1 100644 --- a/src/composables/use-canvas.ts +++ b/src/composables/use-canvas.ts @@ -35,7 +35,7 @@ export function useCanvas(canvasRef: Ref, store: Edito canvas.width = w * dpr canvas.height = h * dpr - const surface = ck.MakeWebGLCanvasSurface(canvas) + const surface = ck.MakeWebGLCanvasSurface(canvas, undefined, { preserveDrawingBuffer: 1 }) if (!surface) { console.error('Failed to create WebGL surface') return diff --git a/src/engine/renderer.ts b/src/engine/renderer.ts index 986f82f36..51fb9aa9c 100644 --- a/src/engine/renderer.ts +++ b/src/engine/renderer.ts @@ -230,7 +230,7 @@ export class SkiaRenderer { const rotLinePaint = new this.ck.Paint() rotLinePaint.setStyle(this.ck.PaintStyle.Stroke) rotLinePaint.setStrokeWidth(1) - rotLinePaint.setColor(this.this.selColor()) + rotLinePaint.setColor(this.selColor()) rotLinePaint.setAntiAlias(true) canvas.drawLine(mx, y1, mx, rotHandleY, rotLinePaint) @@ -285,7 +285,7 @@ export class SkiaRenderer { if (node.type === 'FRAME' && node.parentId === graph.rootId) { const labelPaint = new this.ck.Paint() labelPaint.setStyle(this.ck.PaintStyle.Fill) - labelPaint.setColor(this.this.selColor()) + labelPaint.setColor(this.selColor()) labelPaint.setAntiAlias(true) canvas.drawText(node.name, sx1, sy1 - 8, labelPaint, this.labelFont) labelPaint.delete() @@ -307,7 +307,7 @@ export class SkiaRenderer { const pillPaint = new this.ck.Paint() pillPaint.setStyle(this.ck.PaintStyle.Fill) - pillPaint.setColor(this.this.selColor()) + pillPaint.setColor(this.selColor()) pillPaint.setAntiAlias(true) const rrect = this.ck.RRectXY(this.ck.LTRBRect(pillX, pillY, pillX + pillW, pillY + pillH), 4, 4) @@ -512,7 +512,7 @@ export class SkiaRenderer { const paint = new this.ck.Paint() paint.setStyle(this.ck.PaintStyle.Stroke) paint.setStrokeWidth(2) - paint.setColor(this.this.selColor()) + paint.setColor(this.selColor()) paint.setAntiAlias(true) if (indicator.direction === 'HORIZONTAL') { @@ -752,7 +752,7 @@ export class SkiaRenderer { const pathPaint = new this.ck.Paint() pathPaint.setStyle(this.ck.PaintStyle.Stroke) pathPaint.setStrokeWidth(2) - pathPaint.setColor(this.this.selColor()) + pathPaint.setColor(this.selColor()) pathPaint.setAntiAlias(true) const handlePaint = new this.ck.Paint() @@ -769,7 +769,7 @@ export class SkiaRenderer { const vertexStroke = new this.ck.Paint() vertexStroke.setStyle(this.ck.PaintStyle.Stroke) vertexStroke.setStrokeWidth(2) - vertexStroke.setColor(this.this.selColor()) + vertexStroke.setColor(this.selColor()) vertexStroke.setAntiAlias(true) const toScreen = (x: number, y: number) => ({ diff --git a/tests/e2e/create-shapes.spec.ts b/tests/e2e/create-shapes.spec.ts index a1081f742..8a6391dc7 100644 --- a/tests/e2e/create-shapes.spec.ts +++ b/tests/e2e/create-shapes.spec.ts @@ -9,7 +9,7 @@ test.describe.configure({ mode: 'serial' }) test.beforeAll(async ({ browser }) => { page = await browser.newPage() - await page.goto('/?test') + await page.goto('/?test&no-chrome') canvas = new CanvasHelper(page) await canvas.waitForInit() }) @@ -23,6 +23,7 @@ test.beforeEach(async () => { }) async function expectCanvas(name: string) { + canvas.assertNoErrors() const buffer = await canvas.canvas.screenshot() expect(buffer).toMatchSnapshot(`${name}.png`) } diff --git a/tests/e2e/create-shapes.spec.ts-snapshots/draw-and-delete-openpencil-darwin.png b/tests/e2e/create-shapes.spec.ts-snapshots/draw-and-delete-openpencil-darwin.png index 00dedb5b93fd74d9c47f7a6221c319de8663f0a6..504c7fc10c246e669b52828a0e81b9889e12fcdf 100644 GIT binary patch literal 15568 zcmeHOze_@46g~dn`4WXEEmBJbIfh0Q6oJX>$AgfFhDIBrQ3#?M0d_+pr3NN_ndRTqlXLG*=V>Y3?S;v*^7WcBW?QC z)A;kzDPX~|r>CDTMy4^e}=jBQBUY^9mz?uPU z4S?eWkTrm2$kExhzW>|>fUJuG#f9Rcj0?qu;v$<0#icoMk=lWRqT+1|3I#=t0tJPF zB9ur$p`b_~@cN7PK(#@e*n^jc^9>-fBL5MfQcjr(fpNi~)s%SHf0>%DK6 QkBK`OH)lF)UuSZ~U-kiq>i_@% literal 20085 zcmeIaXH=6}*e)DEML`Bf1eIz>=}MCtMjTNQK_LXC2}rNfJE#MUbU}KFhzcZx5GkRD zBE2cS2I)e87$6V`BxlDt@9%G|@6S2wELe*?g6#e5=dRav-GMiH54E^B_&FdD2-m&4 zw;w|wN7TWm#!*)AojYrV;}FOR$i3Tt8Te+djGSkIK#tbS9NHhBDR_Zx9wAJEAA)G~ z{=vLlDiCL0J`C_OFOQa)TZUfsIt(rv@2Z&Fox5)eHh`S?R0Lij|2~E@FSiet9hl@G zN)8g|peP*F$%EE$&=wDn!U1?X0EP!x8N|Q=ePAZS0iyy&IADvw2>&OGf}Hnp!0-Rl z0uG$VRl76XE}P zqTNfVJ@Uj$C_LLd=po+Tj{nfn6MP90FJDoLg_AFjCP*45XvMakRZ1dGT=HHTS=lOel{Ndy8(elC4|4YmiFab6BA1&a(Q3vsSkh=$U>Y$t-w623T zeSl^TklX(!z}@@$?c29bY5ZP`fUBU2_X?FfD|)3li{*!&kx`k$V6vpK zOD$yxd_W*6wc#&cz64iXc6N3iBG|t*RtQtGejjqT$r(54y_n@g2x07Bw>b={Faa@W zGPFyhG1f@*wecysw{xVX5QEw8)CJwygBJDStRr0Fx# z-kzR^AQgLe!Sc^{?%c7&?hfJVlDgRig@t3Akp^OiL*>3k4-O2x(-ClTbfoPL|X`kB&mz(nf0owlR!dOsk8$x_a>L=2An$Uy~en4Qn)-I}K`#nzapU+?qRw zi5R>vSYiR*U7C_2n(aH2F|}t?X(D{~EcvI#IrFjc@r;a&sOA~cUJog7n$sL?eb(+c z#LX`?HPv^$U6iq@%aC(vwd3uFLE4fU8XAlU#>U2sU)+ph12Hw~kJrE=ERf~&W3M45 ze3rPe65C$HUOVE@Bu87x^z`(Z;+Yo3I&#dgSwMH7Eo3|fGe3keB@?4*QLIt(IZD$@fXq5hXlS@dvXum22>h_J#b2U34gslJ79`MTPQ zz3`bx0ZwO>rj@a#et>4qHIoNCpRjMp4JFX<*qH6QM{DD!Q+0CoJHjtJa&~v#%Bjp5 z5#*1Y{*ZoE=iQxKeub)I(Ccm=RY!!*abb<+6%>M3tVC!fP+CcOdAUnG}J%j|EXPkW&z} z3}P9-sf{-fOR~g8Vg?C=dQMM+wEA~@739jp34awKUy|A)+DtUA`KB}Jy6O#C1~IH*n&#c)z4`My2(Sweq%~NmYC`4=;T^CO$;kfI&TqHF8U*ZT=zE0E`)0VD1Wj-4;3HG^KKJm+(11)}Q z9lRJ9F)E|z8np&;a;9gi2NU9Jd=qrw!D4jR(7zK*XUbit)Hn2(c_CgJRjluYyZi%& zrlvxE)W4Le6zno_bprRs&LZP^nm-Bj#F8tIpHjv++AVP?egF35LbluQEw)z2eU=9b z(hx8Vq)i2!XCi~rBC$46?rc19MnE8ABP(WAhY00ypI+b5vBWz9xU{1H2SG9#j}lu#+V3y&uO|!498*N&p#x=>!wcWyaiZJu za(pSS9L0CPa84S#*2-VEUtj?bu>)#syw#vFeztg>ygskp?J+0luN-Pi+Whg z%omjAAG|3+64`;F&GDu`A7-mQnLk6}2+aijDPJ*ZykvO^S-iQNDdk7dvr`RN_d@2( zM@~rjnWd`w866t+B7J?sqYph4x_b`X3BK_#vVCo4p(;$=J6Ltjut>MA>K1J|-ndfT z&t1}S^9iOmRpF?{WIWhgq<^ggnTNVXOK1M~&N7E&)_I(J(E8k1=_9zl532?N)aSXr zF5@ru0W%R7FJ6Sz-O}{XYD1eK_Eb6i%v!{UMRn<*8gdcf-&al zS~rJ|QW2E7EkD1prpx^9T!FypIgVqHCFZT!7u`jZi4hHh%KEBkNS`S@&u@^p@S zY-~)yl~5D7vtBVdJd6V(4prxP)FnFF$#`2sp4(Q9fACvFCrZfGm^r=yfa% zopZisSXOYkd3g|psoff@cmd)pRa=TmPU%W0|IFL@G=o3NV!EY8yLP{cP1DMP?CI?t zyrga3k=_WJ-u+LHU0q4v@2RP&k()FUW)#=nY6;srICQ8_6kBL^8O1^A)B^py#tUiu zdH;w(+;u=etDAldA2f2J?j!IEPE{P!&w9W0SJTRCUpRQy2)Y-6<}+^RjJ7ZP93~uc z%u~{Fe^lD3%4Tv$eU`M^6f_m=Fx5_PUP=IFNKZc#**t^1r#R`UzhWr*FthE(5Z0>o zdEv(i?{ViOm!vl$Em_7m7p|1#`~Q{Kw!~%KPNb804Hm8#>~wDk{Q(8X?c=1&_a}lJ z&3w_M0@GS8-Pj|1y}i)DSr{rMe8YQncOJ_47863}mX0{|?uvDej7{NSqD$S*f`nDj zuLkzX$w~0|^X`4*(%jtHqUyD$B{n)%vz2?D9-t=B@B6HbyjbW;i;upQb0T175N<9M z;?>mD^rT5hP%viuGKp6geK1Pn-KmZ+bn9ah2A6u-AYi)KbP`dxJlqJlaPY z*@WUcH9B>tp^w{KZD(^Wu{Q6tNBc)Vc{w>xFE7~Vo7RrnwgOE}8@)*x6e<>rO%&CY z>Oii-C0sidf;V@+*OIaW>XugQ+E0#j^bGxd4~~6oEkIV3rL6_7CnBQppD+)_PH|va z&{?JK^BpT~sn{>YUY(LS!JBU98g3?JEdz8{$O$bgFE>n9Ku~(kY;A3gjmIN-#c$o1 z*?B&RG?8lUH>>hoDjj{rOQ!h(%tPgjo~ouMQ+1-XTFe)kh5s^~trv&19cC6;BR!r< zUzYi$$=d6ty!`wwV)C1njhBZ9jM@~!wR#;7=Xdb0N_IzWxPAl} zlTN2wcP1y@|CD0pzmy%Y_69v&KJF5Qh#b5ap1^%2ORXt6ITdBu^c3e}YCWJEeUY|J zA}uW)yVkyN%-hEYN?R$Bg$7Ut;Zp#RzOWiDGG*r$&h)Df+MdJ#msXB_`;h-}d@|9} zgtiRFD-+)`)}&EeZIspZF6-u*PKww z86jJ;j=>9SgDTtGu9HFTjOm8>@X2Z)V1oP`370cm_^xQx399*f5^%l#feIEfZoxC8 z#m_n!Gc99fj^-iz6!*$NQtftlyFW}UiQqdMljiy+=#sGCMz>sOgcCsy zZ(IjCwP4I!R*#qZ0;p5(*P#m9lhS2KAS0 zHO$d2KCwdzDiydkmIb9T_BZq=1e6kFPD{CEXC^ zwaSeim06++sU}fv&}A$%Yqm8GkOrv+Ps&V`v{?{k5cHF$H$}-Y;Dc00b7@0&Or=n} zW7;e7@}ABr2o_ngG*a-y z@OjAMPrW@dG<%ial{}BY`!%N*mB>aHRehkG7Oq≫pzfDG1EwZuVW8f3g1RDF6&bb@A@eo7 zjM4U^A$z(b8)aB_Bvr?{=SP(n(Pk}r$BH{pxtx&#vCq&(mM=4j>L6AD!UsCf)>T!_=R?!yB^ zL**`$RmsW8X*rAJR*^VoY(mjzbT6;UY?`d?%=QJBf1+For#``0;-$e6Gjj?3R@DUc zAflHx#(b*IZ3ViKUD--!P`5oiHUM%;mNu{RA`WRQ_2tDnj}%Wc`z;=u zq^4i;tSd?%|7ZVkF0PV{WEQ4`IyLG3Z~Xg=o88;tmE+Mv*tF9Gsk1=2OhGy^VBrdzty_ENxm< z`ehBawHUI$OW{_h{`jEUQq%*G9Rc)r{c6~i2COzrDm?rLOT0cX1ZB1l`jj~6)0_Dd zN^2_)a9MG3*!y*5YlxVvzz5xvc5?KX&Vzb2?<-1j7oVuDtsQ+(f4?fy3=}(32!rMd zpwe_x1h?SLVi5mSi>-nYblv7B>9W$&uTTaX8=J2B&RkpD-3h!+cY1H|R>{i^51^9p zMKxEDx5i!Zn|<1&BRxdappl6@B^3e9SjAM~^au2n8>txeKi zi|n1t2(JXd0vu9JLeJWIzkv8oQtB;d=sRXLd*FaGf==|q#j?~sNl%O=t&Rr50s_?n zE$0Hp;~3kbf7mY4ri4vsOWj#44&HNZZ=GhVh()LyrFprzxqavvW6MFYq@Et_tg5fD z@^31OD}d)%tmCRmN@Quj5R4r}L_|cBlIdH+LaJLZ`NxlEMwgy~K(Sn9gSfk5`KmfH z&q}QZq8R!a${0{4)8)}TITrVbqi_BWm=gFGBVG4mtNk^8@7L}v%_iv(`$;2v%SAdJ zBLA+))xh|A5Rvx#>K>BsrvQV#d6MfrO9IO^j(l&Gu~Ju6Qygkfws0b0Bj#- zDSNG!4ci1Q?{80q>@MZmdZUc0y;ny5ya@$?5j39!x73IZu@(;e)lg{G4BbhRUw0fH z8A(+;_r*ZW+T)gVf&~1HA!L9B#9YmN(YGt0Ed51l8{?Jqab62#P)8{l+VgLm24Gi) zP?kB<3|~9bze^w7RaYHk`P)2veHrSPPt9?kZ zlVZtV3(eGa<`PFG8pEn)V^zL9a=#v6y6YN~a9Bea#Go6CYRTf~_WSiK~ zu$GhaeSLr}I{+(MY zY6Oy6zj{!UTWx?q5TY`|o@o^M*8H{YQAtVLN>b*KmKfBR9``mTcqzy665)7&_z=q=?^H3sxW z&{D*BjsU&1!|9hnO;(Zh$^ODtTb?6LmS+SQGJu+7596Ja%N1<}a;@593?lzrp8L4c zq$Lsr$k#=>QV4x#u>`tGZW_`5@~4{qBKMViBMAZkv`;Kis?h87H)Eyt`l*@Mb^u2C zthC_?v{~|;Rd8g8PaU;cx`lhnpNQt45~v;oOH!O$@i#$vn!X@Y1fJlcDNFrf8M()V zt(F3s%kHo9uQ4_9w5KZ|kCr#}mSTx1L9R4%asJHy>cHg>;ydp#7)*6_00AexNsU_l zT9D&3TQ{z7JTCbmcXW7|an;A262wHjvj|Cm!#)7iJC~}Z&u6YN1CS|c1#5~E%WOB; z^@Ux%nt9>RiE28qCmNEGYWV;?U9ul9cg7lUJF<5C`Vj!^o?P0Sbi#>WFe6rK`Zcg1a_H!FF=&Alz600 zfTPgdrf`U{(+NPNL-;Qj^aibY0EU_`_uj-4b+sjn6u78z9yde!#T4H>22Fh?VG?|t zVU4_rE;ZzqW!DL2;s~ioH7K@~{`H@dnB7$~ug#EBJ1y3qh3pMbUYwPFnYiD?nDX(F zw0C@pEi5a*p5b$Gsu>uEs>;amxnH19PXXKoDr6ntU({(wOl`TxVo&|2^&w+dAtm>@ zSd}%9&a*Y_2xYHj04j}sepx&Htt<7iD@*)o&`?jria_fCTzgz#FpH+#io-v*^zC>Q zP<76-Xsp`DwbG=hOMf=u&C=GWEn>1Rhz7(Nc%jjEFkT=K2qV;KXfY`Lvn;^mKzRU2 ziv@C16m09}z1J*`sc|RAE`F%G+l$P-12n6MD~BOJE?hkX$v@4Rp=u<|y^};t#JF6T zT%75a2Kv?Hbp-!^(phPg4-qEZNw%T`4Qx;+nmb~mgVOGi)?W#^n+zN?>EP^)ULSq) zU2qt|RKPkep2suQGIJ0NkkBd+V|uu%s;U{HN!&LvZtvf#;c#IkUU#NWR>aF;%Yfkl z;)X!Hw15ue;^plf9=G<>Ml8!;e9mxbE+gk*5_`Zcmn8PMBSy!c_*4$fZMk+HC#glNRE+24}Gbx zjfyorAJO7(_J$%hfLix0VARHIexkq5mT9wW?;8XxpA|A71a9!LyX-Mc5=b{y)UlC~ zo5L)#TG`!`^(fy)s|ds~FZ95+4W0kn?VT0-rVBvb;t(<2?CIVyabo%LfvHi7^t;rq zf!3`jZ>kfWb(S=G*4=vV=a!86iDhH^k3b}EOX@3NBbTyCB&^)>=~df)Fj;ViMNj1S zX>Dy67rHYv2mR%}scC|0XpHB=KK5d7c&A1Isr$`$dOQ!$MN#b_8mmNtQyX*81k}F& zeQf_^t{Mk>`?QUJ``X&-T<1R|yo(6X+S-qc@BcJ^8mX%8?P+|KD`F0~GFoWTtQQsc zwr1tzHj}+UG}OS!+Y-|@%#pqS`T-dWI58tV9jPNAxC%AK^kuKgUst%fzAzO*ZgAVV z%7s9~dF=D5)_+pj$7dWv|9&jNH%pN;`zh@E?>go*a_gQ_E z%(z4y!~~b+=2|TeN<%bi?arL}MUsRhC|tjOofy%t@VVATVBTGcp0WlHo`)Y{XV*oj zn~EhN>9=!U3`*+2)%5Jvj@n<1Twz=CTwyK6z8$kovs$>g8VWZLTZHt6N=FHP@4Nmy z{k1JFLq&j}&!dZa+pjQid6k?kq7$9%nb$iLiM=LZPvOM>;sgjc?P(!1EZ#hVLq4ue z+%dJrfG2f{j*EkCjabpPR-*(!l|5E=O#(l?au-n!)%8`MWGJ``JWX3?2ZWTwO$C2E+y1FU)>eSlmDj1px3D#utsjx3U z0_u#1hX))!tcc&~?&;}i{3zq|-`dVnws<&a)%T}$fjgvq0;xI1w*(&4?j8D-3H!C5 zO!%%~TP<!K*fiIFWPE&_P2-Q|PWYBV!_+Q% zDl(<)*Z0dV>0&9jA#EwmCZT)~segT46`UVW52)$mL_jpUSMI?>DDdv?ZnBN*vuDr7 z1XvPyF*e%C6826`5`0nkT@>CQC@>HA2MWhMR#`#?nf$6C<4Fo%>BOMib<^6Ng^ZA2 z>>(!@oM&*L&}!YeGcn9^Eo!(3Fh@{>M?Z7i$K(!KJlpN%u81HD_mMSOoN1^VA=> z5!gAO<_i7B!)-75`(f1H*XTw;E6kT@`5QOZnKRd^{WTve97iIHqmz@9r>9)70z{&G z1Zi37;NsHr0TvKI>)q?>4czH8j|~v3bSNSlZt#gS&jW^vZ7(bPVEKMM&nDW^4L+G! zvk(Ug^s#0@d7Vv?PL(fQKLsYuoel=aVJ~tE3a*J8rZE9L(4tMNJni|=Vv}NlrFUqr zY&egA4NZP;xbXmt>C6=(OyPsW(-waK!wG>K-GqChy4fp4 zB2P(Z6dLd`6v}aDeVz$D0NVmunoH$;a$2RBfIF``zm2?Oe)h^m0*}LsCrIBPT-Qq0};t?&A-pp}PASHe(%z7SkJtxGGuC;rZDhm!t_# zx_QIJ5J>l~($}++=Eol=jaOC(Z9mY4kG_3`HOd^qe{V#l7zbqTm-cPGoX^4DPjN^m z19epfF`T#ou@#el}nr@0D*+SBA9-;u4u`hTSpM8BYufE1>1ArEQfQ3XL;BDBSd*4whON za;BgBxyz=J#dJ2RAP8v@+dO7_1u2H;Slj-RRQx&kjCxf}CLg-T1Nr{#lX$Jgv*8Q; z?z{^Evht4D^lkl|<@o;*#qEsRb`2MYiW}c$)OS3E>&JB|*!)qGUWMP1J+5JzLB#ka zbs1cK*j=>|cm-0$!4l62VnoR>=m#w3HTv_~afYA7U}?5IQ3hpit_tb086s**qVyy^ zsW6#20Lw3c(!p5Zfa!a{nkMxBD2cJZSnQA{X?OpeiHk$KW?6KiL%zlOv($@LEE-wl zfBu5F+t_d;*Yg|n#+%qtu3Z7FgWGH=CH#xWdnU|*+43zu!YJqAuTDe!nD1bq6zn#x zTEylU^(!<6>T=5&pU5|*puQG`?L%bLuOb?%g%PKZbu%OoEn0 zUUha?Cgnc;084c>fk~S4K-QUK5nKL+fSzZRmj-1{|0uB<+We)fbR1GraN{*;PkX55 zvqld{kLtjyp?Z!oFYy$K-w*koFkpsh3?v$d@gFe*H$2+q`G>e}mS*M+ z0+@|6&t%25fgV=hC{D9R-tXez^ecWJ@b`PZMHy!qiAx59R0_*EX^_tA&P9M?v~<;p zX<{2EnhJYtk?&s^xm7-~6GmE}r5p|uoBWTN#RquA)TXDQ8l!K+I=|M7=^sY5UfYhW zH-Hr#TbwF>EJ>EB+I(dS1koOR zW@nWhG>UcL*5&l~d=C~2{hk+>4Wsnr;V@U2$7M0xzZ$DZ^XpP~5$=z`P?PzliX<_L zSl7N$edSYFlC-=y8z!`%CuDHTV_d`&wDf@aWw$)|kz+cWX^Rh;sBVwqa2tpAO|bq9&CRF!98NXJt6&SS{p>?^rz zDHkEjaZGHEJelVJwOI&yf8DTt$5_wmBpOnY2^4^V$}u*>3OB35ImwDl)BH$-+2KFY ukbGAL4+O$s+~1f06Jf{^CJSVP5Lf<0T#C77$ovJ1dw)N?U3BZ&tN#TKj+K-E diff --git a/tests/e2e/create-shapes.spec.ts-snapshots/draw-and-undo-openpencil-darwin.png b/tests/e2e/create-shapes.spec.ts-snapshots/draw-and-undo-openpencil-darwin.png index fc8230303914c85e0eba0fd9aaba91bf31e9c1de..504c7fc10c246e669b52828a0e81b9889e12fcdf 100644 GIT binary patch literal 15568 zcmeHOze_@46g~dn`4WXEEmBJbIfh0Q6oJX>$AgfFhDIBrQ3#?M0d_+pr3NN_ndRTqlXLG*=V>Y3?S;v*^7WcBW?QC z)A;kzDPX~|r>CDTMy4^e}=jBQBUY^9mz?uPU z4S?eWkTrm2$kExhzW>|>fUJuG#f9Rcj0?qu;v$<0#icoMk=lWRqT+1|3I#=t0tJPF zB9ur$p`b_~@cN7PK(#@e*n^jc^9>-fBL5MfQcjr(fpNi~)s%SHf0>%DK6 QkBK`OH)lF)UuSZ~U-kiq>i_@% literal 20059 zcmeHv=UY?hxAsO<6hs^mP^u0pQbd#{gf{Ak0*XorJroh8OP3ZLf2c@Rh9Y2)K|m6c z2uKMfK_NjwiqdP4Dxm~~gg^p0Pn>i9f%nTf*L(2+HYIuX-p^X=UiW>k4RJTF8w(3c z3PKPheD%tuTM)F{0DKtj*#UlXd9h>&f(}4eFa2Q|mNVafj1PkLG^p*|92zgaUrO#D z9RV+bj5_x74#$g?d53?x#dwFCG~SXir-FBZgVEnLyycFXID!SB0|hwn8G3pP&O2P% ze%tnzY-h=K;cSD#HcoE0j_tO%%@nrD(>5{O=E@)kw&eq_5VjQ+*o1Ah2sYt=6BIN; z_5pqWuNSZ#jQ{0eYzJUF0RImTn;O`)&Ntgads}F43+-)2u`RT>g*Ipi+Y^}Wq13j} z<`u&K_d>g4w4Tx%Eb|zJ(0gJYcTUmd9~H&2+pwhh7JPqz^pN)TIh*_A!$)O2?)Xj@ zl3yEr71(g^{O8X^SE6{-?~i7kpNUsh%YBntHOPAN=XigTXwg0I)?1GDFHW?UaZ=n{ ze^j*+-{ghw|T`jhx$Lx7g^f!^73a$oS$C!dM!0Ie-3L|)MC6H^4AFt3M$De z3un+Yy?VVzY8dS>y0@R72;|@6B`GVrAMy{Lqtm%xlcV2z_2J-74^BXDzT;{aYi3Xp z2Ai|y&6#4*m?z-Q{#LN4ja6;paw3V#CgB$q(@aD~MN?B#(?oW~wBm1^($Lftizioq z)hpO2ID=eoC9Rs0x(5c1Kw~s{@b)xGDXDlejlQ)=FI$hv&(ANlNo$>gQXXfP+S%Ea z-FqY>BZF9Pfx9+(dU**!{+iEmP_-n3!Pp$7Z;pP=H=ba!SYah_a7MnP`q!>qE48nv ztfVY3=K8pwb2*;}D}WMk&=ll@aOWbJ^XrLJR$@Qaq~P02b&vK}up)cD&(9>@hP`|y zfe8a&;lkDjNk}9VgL!-t4mmiYB7c6yM=f}znYep67-?JSZR_RbRcgZ-p>B?J zL{6)NrFXP}Py4|&m>X`c=5p6_n->maU26m(LcroM!De)5Xo&kGdF!o%svnhDUtFvR z8C_I&IS_-nFmD~Pwzyet$S!|v&-Xw}S67nXdYIK^xY-rOX1=8FGiv0$Zg<8=AMc*0 z{kEnD%01ddcS;&*1->gUU%_wD@VzCrqJ`FhB2ed3AZjG7gVjF%_;GjMnoi;sla$;Pl#8gvIr;}PO}jFUm2{;j;PcUvv2(NQYATU_gcn=lb~4Obz9fcTjX#n6>$=0>I`=S&)rzvJtHIQLaGE~(<`s#`Vg3+vq6|sC^Nl+-bB)Y^q@Wcx0K#jjx3RT8C=y@ zzGCFmxT5aL+2>*5eCgNknbZ-dTVZO@S@CgIQ|UrJlm9a zQ4NOW(A}MZqo`K~Q5$XA)O{AMAHJ-8bnWQp>8td*gvG)na=srUxcB=1j&M8%d zg!%b~gP&FJ3y8?-1=G6c@n|?S`3i)4vF(AIc<5q(sl2b5nb{Y1i)%#S=(CF}v>_?v zpmU(HDZMg9dB(i|{U7PqL-K|yy!vtwR(R->CP>Q2Y`i@=c_0NNIg2K&Or`z%rB~?Ti-AOpMwfo|Ja#xaqoU`KXzIsuG>t@_TkmMt9HmB3)6;Ia2XVb-T z)xS5V9qUs-*ypX(q}US-9t52BTD8S@WNPg(YD~dFccs-ATRe*}g_S7Yuh$0!WiS_g zr#2=(R~*U571DRc)TQE}PXz;2x7C?V=FJp}XXKMYJwp*y-l7&OWxp1cZ20u))4cNc z1h-WcD8RU8$5Ets9RocxYF1-nVPT5uvO<}o9^b!;OMz1M^KQzYFVyu~?DW5 zZ?6@I5Ym}1MSb@nhy7&NWg>eKW2tneZs~%)VFOv#d=tP^xqEB+^XJdqnv(#ErI{2M z$p!@l4M(oDjf{-kkGOmHN5ez@%Ve%nNa4!DEmD8 zwIBF4|2`L>_F$FuVkE;UpuWCdd)WWtaM((lwwo$pvKevql}sC^cF->C%p@xEAB_i` z?*4)21!jLbIy&aEhiA$P-v!V01`zblpAYjkK_ZbHjg&VmivGrr{L`mT4-`ph`z9Qj zi&H?I52jh#{N6S3_l;dfIA98C6t;H1%ZiWX&LPO zhkWBlXiagVwiL<3hf_*l1oSzETGd*ejFt>FV9%F-Z@E3=&~wgN8X13@}N1~&M(xy z7dxsGvRLfcOgX7~`_e6Y)8)Wi8!1vpVMXh>_Pm^=5PW!SY;4us4L4ZsVZKkh?|K|V zVR3KQIqS?8dwzcYQWqJWfZLQ-(d7nyktTH!38mfmL@8}b^jf!tdF<`sP->L+Xqa22 z%$!x_Z|bfk@cR?}rEb~Uen}pvsNx8d;pj!e%ns6%*rmIWz#cv%7bJl4lCs531V#;^Eh?hL0PXMAb?x#i!T|TjVEy0*Vot~2Y z!+NGc8Tzyf6!fr-r6?hiZz>ip;QEi!p{!`%z%^0WXoTks`>gW_(w=@zj&L$Mm|T{= zFw~2j#s%YLWW#;^xL!{(yq`}G`jR%8HoAA{BsY_{LkSaz==G`kh_%PcxQc=lpM)gG zZowOka>TlYM!&FFVG)sB&N#BPc!n$EY2M@`#hH$G*wfSK z{&&521VV-(I`K)$ukI_ADtGHeo9O)99D6w#smI2EY}{BaGL+E{p^rwfmc9=N=&{Bg zfpDVm!l&arYev*hP%6$u&6)XT6D+%byWBX{>dd85(5Dp4QTr?|%3uUk>?>7H z5|FGX$m+;O{Jy#!uU&Z5;dQIzJCmuFq|Hsz(sHn4tG!=+^wen8^*d~~c~bOT^Apkv z=XtF`CGFu*xHc1&8(N9RY*MMD<-j%H{;0c4>-C#{Q7J9DU4RYi1WaBDK5nWtqGFa9 zsS`5a|JRw^6_)o$=dtmo+?n*#_T!YA;5jCpiYT^}4I6u?W`%E=`lTh#e&x8DRP!ZSm8`aY{ zc2e3n1PNaT{YK8S`>nDL*!khnm02aB zy@x#h@#10E#&GtdakX=+ zhDWU>N?8wAf6rp}jwj$3A9OvN{(|MTw&FvAv7p;8jMl@3Y#k+LK^p1?Onz!;FsgL= z1^}{bv$3(UG!ry!so>x#VPWCm&``LXg_>Iwjuxy)#C|t5)z<)ErEtUQvoLR%O zSz7s;_tVhGHEJ(R-jR%Ako3Yvn*HoF+0jcQ#P5%cuh(xdJHNXX>-nT~|J^!8Boh0v z)>u0+p)19ff)=UmWq2l&NjZ6tloe$+B3GDRJNVA!Vq_1T_%jVOsR;y^fe@}C{6|+; z7oZ@uw^s|cs<+%ET6)^Lt0#d$aP`oOV0uTM8NXc35jVSOCkCzm?#S1$OHvm`q%Wja zjlTOyVJPDkX3uM}{8Aqoa6b!&M$J=YS3^Q>k2lm7G3zyhmg>7^E}Qa+|NI~z*K{5T ztUjD$Huk=OhQ^^(>*2u0ziH3Aau2=K4^*>`>+S8u+E;~yh8hA+0uOj&&OZbYj9*0W z0PhaY~}=Gq%otq?Xq?O?z^+~)@bGuUP$Lb*98Dq zi}mi;D)n`pqNfo_TU74s6!+(Ay({?{ ztp+}j%N3T=@}?4_uFAUgIoH(G$VM)Gm>p3{9qTWUl(=|t>0jbaxj!X`4IW!6PW5Ov zoY`7Djj_*0ZjjJmXUb~)BO<((zx&M5Yb&%HT=(tYe@C4UGphtdKi9%spRqBACxN!) zM_iu<2tHmkkl|XjF+5|?*V`-3<%o!g0Da%(<~GByD z!@h!r-Z32N$5#4|*qw4<85W(Pl3N0I^W8lT@S@n1vp7enpAm2helLbm-)UG`syxIR zO|Q3u z8e79&tZn?=3f`Mbygu;lAOX7a5(tm>HzDyAZd9Y<$gPvi53s&F5e7BiIZ?BvAD$P5 z%50vYBGqA3?ouZMK(N?rU*lxiHZ9+}Ws2m*2wfNqGonO1ZjB8fNJleWLIy6-9o~s5 zv>QG-w)M8Qrl!oCyDZ1O9~7kF&?#07N_^;i=%Rzo?;vw^To?GE0Ka1KnwEXZ=}e;L z>T-5?FV-$(WN-=)uQKKecV&a}ylZ)aBz+#)%$Ac&n$4RvG>E)dtVdvXI>+cX?N8I+ zyU1&`EA6l+j~{Qa*~#WQfzxIoUw%%t$~~BT&N>U*dSb|Nu`VfFe`MPcK9Q)MuJ&Bx z@knhbl3AXcD3xrm@nem|-DHV_UZvZM0gzD-7IS%yo<&ny7A4%6{5$n;9f)xNdg|^0 z)9T9B6+E*!NKAW?R8hs9yj!`FxOUw`s%x(2jA4LVvBSU`^M;M*vO&mHOWH3{0Ypwu zqPNObpFml|vuE%BoV=Q^qncLk(XmJ+A?JFr_iJrba9J;+?sYs8 zl*?`YFfOmPDsik0SrBx{0bpGJvqkyrQ3~nYP?cW?&5DzXaFi!S0}o?>|94=8Xeq3o z`y7yV7g!{}SWVEu&v|Rt*MyTw7G|IF&Had5!3d=(r}hMi71FHoif6fDtjDf-vjFyI z4GotmFZwV;py-ldi<$M@B*i>m^(5r_RL0ukh*b3@r|{VVARU}nrrS!@DJGfNL$VbW z6;ZcMGB@J=0S`lN%^=&iE;soyKFKHF9#KkvPUHNc`VFNY;ac_V#90g+*keIj@&2WN z|D-3rh##11A!(Y3Ll2Gv06Vetk@yh7=?=!8Cb#v4P|T@Phh=5BFSEaaKA9|sw8I-9 zySQs@eLyN`HC#x#9w!xhArFJ`>Ootbbz`iq0-1Tz9`f?{_YbeynD;QO^&Ti&Dqj&G z9Cy8%V7OxMOE}SsVFgBmQrNwFw>U#4JR-u7S(+SMd<m|e%7-CrEi=hU3~p;9dppD{DZ}ENDb<$ zS)gq0wZr>NT_VSe9u@`;{JA+aoh5=Wa5BNMn)U<-m@sGElJ$Fm{mIQSTpJD?$Yrwb z%_|N(Ma`}Vh+3+M(?KGulv?HH9_C*187Mnp*7kSg_gINVTKK{M=fmI4_E@KSU3>by8rlxeoAZAF zM(VL=t5dVO94QI!@dM4;2cJ@%~>x8OqC! z+hME~8y{HhS8cc+Q~?ZC6bc1e1@IV}!o>S-tj>bE1A@1Gy$2Y; zP5c)=j+=*hd#e<_Rny$DT-q!fe=N+|M1=r+^8uIAP6m^Sv#(N(E=lrF5a0k?)&hcP zCxJnBH=R}(74~Mef?H|$?$XxE+UORIc}?5r$3BUfu?P?1@|W6U57JDg0P=kA;Bq?r zhO0{lV*ywX%pBa7!&4S_(Os`)Pk0)Qqdl%kvx@!0qI~L$|KTzLdVUNtD zcK$L9CqK{I6Ibcq0`qi7ikWpqLIzuc=kJGexSMQkU04=8w4y=-@#z}-(!HOo;?i>Y zf)vqZ5pH>hLB!ffsNYD9W^@fOo->@n75xjOb%TEV_?kZiYOwCX%3lJxy1_I+BN6ju ziy58snJ4`CQY1jHI>4jH9v!Fvg2N1!;hIcxbq#B|8BufG6{qVzW>j#ixZPsnS==m> zCt88$*AIGCS6A29uce^url)ha_#*(~%ld;I-`d*B%gcixhXddtoAZWS<7sdwLS%EG ztz)4_&&{IJ(o%Vg9gzQ#LpvaiXMbLk%_*4-^S+KVCu-4!9F(Rl_&X1S!h8|3?puG- zR0rjlHkXR`3HUvYT&`+_Ge==^+IJb1{c^q|A|ev;Ch&V%DpNX+Q|puWATT}vj&Txb zagBDs+U1<5%D+F^y!)3^=7mX+79oJu6#4{XSGZ{U;^Ka&)Bo2>a5$W`l;m6a^X1w_ z-!yZQl%(a9cM{TTs>^Seji7CQN4P$uaTo~b$7#YwnP(iYpu?6UDy%FOb3;XZW-GwGE|Qj*a&an8+x6t$MD#f)$;i`_ zo$FnwFYZD4e79%Opix3bjbPkyWiV3Ns%L^C<(D9rot-@cd#$l#vbdYoB&y0FNlV%l zBl~U_911vr@-Ieu#GLr{?b|_vx*v|2@r3>z4enq@(|P{RaQFylCV6*i1Ph*j`^|Sa!FQL+j=}A#d>4NF*z@1pXsfk^#$tU& z<&{K5=?3aLXQf|g>qLihM&uk$V-&3@&D8b9$)Oa_*Rt#cFmTT!@yx;PLwa$woJ?FhkCCs5KPe3N*7mp^B6UCIRBbVb52}8?7 z9L4lx^YtW|4Y{;H09;e$#?7Og=}FeCf7(lF{j=d?b5q|%F1%>*NJ=1XC4OGE0H(gy z)g@EJ#w`zznNn+Vrd5JFq_&{%17f`z>nwx46v> z$P_~$5CU7MoHlBc5#m%1msF5l_#YAe-qqwl-!JQm(3^ag0CGtHWV+=(n}Hn^pzY(< z!oVO-bAOVyZ)*Odsk}#L!^H+8va+7J%$lV)n?7Qj(7AU5ZjULE@^iuwN#;5I5>-}57Z#Onop5d73I-p|z<}Vsaw_4~M;w@ry;=Nt+0k82In8AF zRGLY$;T8)}(+SEzIRnRW{4s1(eJ3!_$Nf|#84>FW=1nJCMbF0nr^Uv7_4fKIEY%}< z=kzU`QbPac*TTxQYi$eH+GMW9wz5IVh|Xk`DJ5D{TzmB_bylv&Xf*kX#dEG{kE}K$ zIn97-zp+1cXgb~+)YCdh@06POt8f?3c4rL@ja3+F1@`FCqlt+Lu;D_`gGzu#K*6Lb z!=o3x5OXw|lG)xBV`WgdoH8)rc~J3I3cI+tNab!)lckpL;F&KLpg1t!i_a*lUS>@s zH~U&~g&2y^&nrBQ`{l5$nxod?@A-h1`EB<4#TFL{tJfJodQGo1f;Krq^Kcx+p zyJ|+Ufd^XZB%>d$u?QSF(D4dxfmA92xdwDa#N#naqLf<|ZDHZnmfDA1aw>NdL!f|b zz_JmbnZdt%2-wFypg6f7@$&YbucdA-R*^Or`mrA^8?rJp56j6VBZMK-)0ODMSUY?B z^1Brv4hRkz!TBgbJg{aN*b_N{6<6VfPzR{j6#kV0%#F3257o~#i#_XGcJvlo6uH)i zkH;yXscK#}Y4>(COl9=EJ&Yc|3?RU|xhU8^>$p2S^- zyLqN44|pDuaow`hS?Y%i+obndFqEWjYRbFu$Tyy}wK4X0s)G4`Vc|I2hN<4sQDVSU z3&ic-s_@Kfl5NJpA71VjcJxeFW?IVc;)-r$>Eww|oOxBN(5fb3TfJITBGu zw;suqA&cu>jnTn$&Nm#24xv%^sasbH#^);B{REP{M;bc%V7c9ssAjo&E79$aw6x#4 zYYKX_oxD)(ak-`?Dd8D;JYh?7Q_CE;gQo4Fo~3`slNfHL@4dnNXDc2`F$O11Jc+qp zVQ4+qlW-_4t;DlRu>7Q~bo+@1N)#KzUluC*^L{LUDW9+cMk2v$#mi*P#`5z1XuHBanYl+@>AKzy;(Cpw{$zQbYh}2~fNn7gsj4o!=@edNeSjt~-BdoZd zglYu&QiOOhw2m0Fdi4lfNZ)4&OZU9okrkNPli(){O`n@#Uj^>=pyTyvO5JC_p_wVlAB1A+)M#K{YZ>vKsn&6$;a@mTp+C;fTQ(QjuOn+>- zssB|;MFWRM(f9sRVkzp^g!Db$F^$mSS|9cJl*`{1N$-v!bZ345GX$>>@yQs`Uq#!w zXL`<7LLB?CBt~o+kulP#^jemo5?(RJ+%>6`Ciw6CF?U12DRzTm)uw&%9qJ+6SLh)b zeRfi*TLvpWY|BN;K(_#!PBAT?>xpbFeL|pFy^ZL$%2c*%3!U)TDX!+YIak&(YJvO* z{T1uURe+94@VbxjD~6Jp@{Qoj7+nvc8ik#nZv(GWV|SI@Fs|AWqsJ>=j82houLb_& zcz)WzUkwEnV_|Rq#6A?G%~`A3LX*#bkpPlYY;13pVDP>=^f~(jnF~9tQ8h8=-Rl5L zGXsU%oF#6Dk7Bx%w^}A!551>u-HCjhZ1M}Fyg(LH?}`d!^89L;Ls!JX;Vwz-yUxC5M3Q!7)<@M)5wiCGd`tB zv&!U_#;jDJC8?g*cRTTQIdaeo5|xHOtRW3R&topDBkBd?_u1qvE?ck2h};gJT)P9u3|t!;@uI{d8~_q{F-ROwT@y8nQu9v+pi`84IaW zPTaetYW(k`A&;%(ulFFo%(IQ$N@C)x-cpX+@%d}=EERu-K#Bh>#pbiUzhwAssR*0^S#?I}$ z+aUk7y88`HQ%6yu2a5#?RffuvNk9{ad#^%j&FVHMftG4ydDHwgksY|0RZ!zOHCF>G4OrgMP)ZyfB4@5+--o(*S*%Qc#Y z@>$Egt2~Qle$0O1PJW`Sf_Pe|ds@YvI?%vONJDZ0!Hrsjvsg`$@^$cBP5-td;SnNm z`GXL{wb>xn6hVR)Z{)XJIf?GI2UP6@T=Dpzo%j0v>L9_zPdzsUCkWOz3^HE}F8`Q4 zrtODpaFm_s_s!#X?l5j;`t<7RkLgSTB&Wqo>1%2xcM;wD4tD^eu%8w6qKSvl6-$qvb;N8<3u)L=1m3yl}?szuA zI&ODL<>x7FWW{+jM)w58<9E;ExKwIOyn}KjvvXUo6vC4##Pnq#F-m|RNA+*h)A1di zVb$@PY((Ok>KifQv89#y@~Qk>4XXQ>n{tA2^B?FzPnCTmLcRNAhwTgV_z%8L-oJ8s z0g+!*0Zs8a@&DM~t;5r4g^MzZ0zk9xSt!MZLRQ>On zOKP|Xlt8Wf@w?2;^*=h>neO#8AnJm3&GnS-#?ldmo<-{wah>2Mi}f`6IbMEqC;)<7 z>8%*9?v4*koE@wGQb2mW_Ko|ygQC}@-y;nHKHr|+@^JN_0#ZGM3I6Q zkqx(z$=-#_WdZ%G3kQ++vXbaBf@=IXGXx-$|9W)OyI#=FtkW~G9O*d-Tog8Ui ze^}lw&os|8^U5oWY(eEc$Wbm>xNUnH(2MlZkXek)_(`&Q)KPM`y2h zU%q^>*R#}Owr5Z+gk2^ZURx6jv4q)Tcy3EQk@xF6S`&mjAvMJH5ux+lpl#gMU;oa6 z&(`W?ie`+~xo({lj?4o2$2LzLyFx3=GmX;aL(8vOTEHAe@0B3#x2foT>vI3MB1dIk zPiJRV#BuN)G+MZ*uFf~2QwG~OUiA_S# zSyA=G#x>*nzWuf5LguPmU0n}9(z@>#mUyik;Z1WJ8Pm-aP`;+t=^!WVDBMhmsO-1S z{c!t!@fO6t%BezuAHGu-Sc|hS#OF5dD|YHVlh`OPSw2^EdM8YT|4|k+V};=v8y{Dj zjj)vMIhP!|^Ho7XLE_p`DJc!6$i(CH-I~~mf9zrjst~3!jrwqFS*?xds3$rb`*(^V zDSsgsibrew?Xs)F^G|4rAB?y{rYfTH8-~wqlQzNjkfOsGcqzlVEA^D5ifqvmxP-wIZtAa9CNzy z`xPq4vlG9SMw?if#6b=pr%HlZ zG&PORh0eAQ-)6^J?+P zcI>Gk(>Q6d%R@M+JA&fTDgXMjtINWF>HA)ZV@}8s$lmP4-gClKt~t5#mG)wB-pT3d zTgd4LBOn&JH|^tG!)_R!gEi-K;!2ITci5jmEDoarIL+^M;<;z<<)z5$bb@~u zhh%tXXXonb>Kwq@eOSgsb`E0ic|-$}@x4xkd3kqY{SY2>jnJ4=5y53@s~6t>RNz)) zaL6-70zV;3)9fo=Mub5>CIX&mt@IpWXYo6WqO1}lvvNFKL5kK zlfbqRHj;H9Yv(=f%8oa0Rt7M}JmXx2L4;(96 z)ZWoiigyx^F~;F8BHaA~8$<((K0cUC!W=KPpiET@MlqFq_+YYOei%(OChS!=MT1%j z927b^y->udkvMvXKtU)lE(N)BohfKnBCL6X9F`nz4t$F(Inzi2;qc*p=pm`Jv=qQi zUKF3)Ha_npAI?-#QWA%-$h@2Q*_<)u4e7a#7)s=AL4h2<*_A675aQQ4h@V@(e*L;M zGvoyhpq1D(9H;2!Aj=D=iNH&G44BDQqaW|>&?9UOIE~gyZW&ctTkNmsb+WWPfN+qa z0f}BTGc(g89FP)u5yKR4I%k)=iwj+XDd!;3vqROwk|HlY1y=mgNNk8Z`4C~PNeFuQ z>^$jy3_FJP)fyLf1{315QqDl45_%7WAu)Uw=P1#!XgC=GMqD_ARsN2P#Z^|OBUv<= z*^tBPWg*28J@_~s@g+K6x8ra1l#!yhE-=7N8Y0I#bnJ(Myu548LRJTk4i&yZEXL_9 zBYvi#hKdJ3|;%eT57>&FrD%K;f zxY%oLWyzP6Kpgv&w2#}}e2_l73l;m}J&7df{HA48L`dJ+ulkw*w-#tgvJ?4ni_=8R)xe)^jTG0RKIx&iiL~H_55jf0_94V`!~P zplY~3B31KeP#yp8g=IEhh37hGE@Kuyo-NY5k>KF86L2K-;35rqAH(!^Gwern-Xa9) zySBHtd$Ky&-ndbVMHG62jd&;zU@=%Ju~8gl&WVx_Jd2z<{tT2{0+3-9Z;|~3I?86b zKk#gLFnxa=Fef}YHZdVeObPDAAFzd~xgSQwKCmljAKB%!Pg?k@?m>98haHW%W-vxk z01lFT{8R8-?Nji$`DrLQTzF)RLJ=d5hMxW-9Ug@WV<7DC*w`4bOflktU}v_obkJI& zF$3R5=Y)sCf$E(YrH@{<{ke@7erY?HV&7jq*g($t^w-;)2q8{Jyq1-l+vQ4>gKBsr zj}W2~u6PJ*0wU{qd1owCZNL&;j*o`d<8zqFG55B3lQlmBik*B&+7RBw*b0rw1!)Gz-O%!e(#F8(U>y)E4?r^7ASxFZ7c=)5RN|+45gl_q zgzD;8g3jJ!irpQC6n@57G)9KQ!y5QA6jn8yTTmKSJ01mi2pk}hUz;$(rbv*@Fm2 zml2`*0mkBqQIxo*64;O^XMYv-T`2pzHi(C@rb|Vxu6`6PewefWi68j$s+m_09kg&%@{pFZ&4(}#ca9$XuUIW72TD9zMo zuNt6ZpSO_a<`2YstScd+8oa-U3~ve1t^rQ&qZGRhD5&^U^0{%So{YT=Pg!CACodQ3 zhTUnqkxya%RRJO#MTgLuWKL-lWt5)9!4}`csF?QAZci_M3P}u>tExc8e-CGR7chJ0 zilVroB8 zRFXvYU}w;Bqfv{NM#YAJs^b>$E7Fl^hJ*#=5J%RxeU$}GMNJ+Jc++1OAZy-Nh2KZ# z7%}?N!Srqk?2_27Jbv;7xU@>4=|2#W(1t~fI#Dt=n@hV z%=nRixM_nUQc`jN2N*SJSIKp_tAjrcUNyAh8J#2^3d`wF6oa>w+=hz19>%Vp>DiCc zXJ@D$Lee;6eg*!f{P*tgK$xL{p){Yj90^r*LKjjBKva?4{d2>l0PXZ0xJtb#l8!^l}oE~ z9L}@se)bs#6%nL5-|g~(<(ktL4m#OOE3oW_&jfnVNmo&VPL@}1|2zYaKo1~n>$yr3 zQ&TNSgX?UC4T828AZI)pp?=_uPSPb!NMm=uaG-j4BqG3Vx89zk*%WK<{Z4bCzTQZCEX~!wR?|y+SMnEJZ$vkaS%2Y zAkXaAR`aw=srC*IRU0h=eZc7z#-3m$X1t{JM=I45mN=B94q5LyM==4F6)jK3Bc2>8 z1eL%^-RzbFOYcoH871HHpryB86+)ER!wbrfif`X8-Aw@AfOwDd34xY*(>XW+N{F2N z{6TB-+qZqwQTvg!k~j(izSuKMW@Aj24}1i9VX%Yc9wABI^mSNyJ--22Y^G5d=X-!s z;+EaqUgpyi>pS7qw8DV!XZ_$)85`3~BlJ72Cm!Zw&Yuwz>ahiHegh0yy#x&hBDQji z0Bss!Nd6eD;(7Ou-T940wwREj^Yv=lG;;dLvygQpD3oqGI2fgORYgCd)lrced5H4uW={!LDd_5uQ0CvRiw5eeO3&TSvVmlcYs?&XovI3YBl8YgUHvnmip_( zHuBJ&EH0OgUclGq+T>Hk!^zLQ<6%rfIv=;=k2zaQqFibXk>XLzW(#Ji5G?6)2gMm< z9Vjp>MUbgDfC3|7A;ZIayiQkm=gi2!GKu3t#ddJ+9bQ?Qp;avdMyUp4E658e=Rxht z_VCqVH3orQLCoUmc6q#)M+XP#T@IZP2pcbaXwOb}kf*)y25sQ)-4PKH2%_TzP_g!E z#%aJe6KS>em)D@rxq8LS47s`?r?L}2oBT@BN_v-<*9}}qX>F+Hecgth7F%7mIW1i z?=QQ&uklJ|>CH#Y3!{l9KfzB&M@GwPDIz+KUxIxmocEuHGL_`z9S7wU=18;M9hZy^ zXM=yhi03;0DMiNSE9cHaP{`t^c_Y+cchAkuAt%JfLv{?Lew<1u;}{v z)0pPTXg_2F(3yEvqc`WN#5*}Z?}`?+1pa8mF}D?q%)bZoZ-Ot`G{i@+j6Ehhjf6g1 zQ(ukPN~*>BV%&3b2)<`PXIfuZ@`-&x`+Yyf=Q{o# zO?G*GH%p3&Ow*eYd0`4bKXl*ydayU>hQC5-Fi*G^GY_85Z4IB`n=7zbkVDQJ?3(2BK{MR<)q z4pxXww+{{u{=wAM-mZ<&1U+;$YG$(?A_`*&jlr6|E(G=?%)kw*a{ng%Ory(3(>6M> zwCtiz-ReVg4ruxcGc0(PGKw|X%7#u9zkiREceJFSBK%0iO?!LJy+6zT>WCc}7!Y3l zG0LO}pGflPb4Y9dtIjIpMqqB{JTd$V;9`CfQzU5#XuS7y5)flAYQ}i3OMD%^TZpLdV~e3ccStt z5$cx1uQuS+V|#l`tTx-0F!obCEW5O6n5@gS&h_}|leqw=e~<&Xh?qHY?2jD9S#T?N zTLIh(_1ns7)dgrJv41FNw%gMwSB7{PNDlOwu?FeQ13B&;MO0Y?O=q zyTcpDgyK2&o!<``_=Y^<<(DPAR}H}Pr9QgyG&;~jS*kdnpEo#dZ73HDtoRg zgqKw|KKFrii*4t96%3v@8uvbQL}m&(VH1U@LoA%ju7p{G)O_%CSH9xa;C`UlQSGKv=bNxK13`*%Be(g%3MAOMdD{ z4y3Eh%QPuFVi~lomNIqZZWxPq>f)f2Ja#6-G!v+bIv~7I6oRN7BgKgC`Dtf)*;{7B z@xEV0Z@`%q@yJyEzNg$T7jzA}Dz;7~B1CECnmjbI%x)5PyA7+qKrQH^UxM>+AblkW z0-wCWSE@b1k!2Pg%b|(6tjKY}WhwGNTY^NWfBO{(y>N{?@sI0ZfLR!tpqhqjZ{!#9 zN-i4d1^*Xro&6YCmH+gml+Th63^$ow$6)!jGyimG#kzGqF6)iFT}}U*0dI78+*J`3 zHhzJkMR6B$K5XG~*|Q=Y@h)WWao^kDzO!;oLF=cSLoKFDW;sAmfw{rrj-z&rU7%bd zT*Q^Up8AM*ENlX}cO5O)7+*PcXzF8CEu4r$m}_W^WLCEqM*5_M1^hOiI>KyhzJ?X#>sl3kW-k@;GMnp-Ya zR&d#Srn@A6E+gX09-Cbn!wKs{tFlct$QhhKgLZPZjN&L)wtOwZNa+ssx~x`%l9|U8 zx7>lSwK~P3prMk<$0HZLHAY*XJ*s)rxmJGCO}W5h$i;49&3edqC@#xu-C|~xlF^dB zHA*FS?$;F$(uj7NO-mLFIkA=$x0Z`I0(lU^-FX|l)aQ!J24B1^8?RVh?()#}ULS5b zUN)1?m%a3b8l-&EeW9AE^7{J7vuBN3f@@=w-D?XI3{fn&h3TqM3kyQ?zC6mZcfU$$ zircJy}qy(#1u4y zUE0`lJMGxxUw@aAczu6A4A3SmweHw@;kM6kh!k$h-!$)maE!9&#OLo+!F3zT)bqwn zIYZ$>fvLFk(3O=uoKbP#Gn}`}KsxFDi!{>(HBJD`HvjVvbXH{6aF+6R8mnWHu4yF(xN>7 zds2MJe2#f#Y}B-%)7+zJwbV`dFO`*k-w{Q#(b`8|g#M6$4;S}z6MF7X7!q#RJ`E5f z{6Uyil5*^rinB|6EZ|{3t4*OizoF9V`40vl7XEg*PD9dYew%~aET5p~tD3C*UAKk< zE`Cl@yHt8T>DDKgtdWNae7;MWb8;P>!PSjK$I{^!Yrdbk4G)z2_Q|xEReBx4z4x88 zDgFIpMB9OIb>~#eDV0*{*S3b$s4mJ{g5?S~VzMzHit#sukqW5{gcQB(qyiuJ$-hz( zekayXNiHp>WY;Avmj;-de)^sm=VGWb*S>X!2Wd%ymDefp@ml%imN4paAa3N`U7hNJ zmVHY3GInn26zcCD{RF=FE9oU8YI*GrS!+G%e1c11r*np8cB+`cR!iIqzCN)moJ;;f zTFW=$Y+_YDwdl5>@}Ybh-=UfC!DMNs0cT`2+8m(Uwl6%={c9fQ&P6kjFbCn9!nca0 zl6u7mqhB_(xZN%H}SNJIR4iL*g}EuKR+u=xl`?u7Io^x%6(k%m#$jD z_1SW_vc51WzC(l=kG!Gy%!%9Tq}7zw1Mx0~YO6k7i)AFjLRqQX%5_4L;nGXTk}0MY znf14Gj|GiA0Wy!S4vsg-yI=vh+ODHX%V-rD#E}I4YjD8EGY` zG_$i2=Vd*YP?F}nSWj7}s+ayLut=y#OmLY~SyhaGL#p&45Jn1$Ni(G7^nND(hQs@C zc@O&JygO@oCF-@No@aabj_<*_PMY~l_C8eJ(6PdRl7Zh!$4q^F_P**y2f}Si!Eve8 zMoYy+ueH%~*T06^61%BQYbu^5{dc4sS2CqC)f9ZXWYQYCGCnbr7Q4hII=x~5)CoSf z-nMHmtV}q_Q@1TA>WLieFbNFrv8Y%pFmAJDb|T`h@opw{me&2bT5J zvG576k90?kISU-Mtb^k6r(>;BORpprSbiG&-a0UK6i)p(d2!B#658W=&E*L1WW>^6Vp~;a6gw%aZB^q9Z#CBQw?{0>`VH+Xy|>X5Wl|SDrdt?z4XO_uAV`F# zJnSDp;zTm2aw_k%+zk0VHH|2~Ners!qXsIn|GPESnZw83L`3&n{B-v~7*EDRf%oPE zFQ+^?CFNYyClbNU1v7=G{%`5P6Dkq_>%swm-6tDoy;zgC3TP&DX$AbzXKdGe8+6SIFK#TRA7Ad}>~8#hXu z#2{!>W)QRq4QSJxz{dcaUIW^6ju5mNP#|bCZbHyzda#)u&{D?D^k6eR05AaQ0p*=N zxXMNTzW{nQxalZ29VN|4Y}Qemj*^Ch&9=m59R*;pSx0TwQ8ah3nI3GW2Q(aPrU#qp z0SyP6>B0X;>A~5tRzF%9M;0QCdU+=ye+{>3sz4%}Esy`yRA=Kj+aYM%W7_{6xY-NX zyi?u0HUNHOGu_=xcL5AGW9ViKrNLk`-Ti;`Rlzn0T3-+NP(%BopNW>CFhFnIbkw$9 SoT;R#MN>`ZT-F)9|NjE-K7X$O literal 19327 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 diff --git a/tests/e2e/create-shapes.spec.ts-snapshots/draw-rectangle-openpencil-darwin.png b/tests/e2e/create-shapes.spec.ts-snapshots/draw-rectangle-openpencil-darwin.png index fcb15e77ec9cb3c1d298ae46422de84d0f44af45..2cf8e44712db7aa9b14e003e0ea29008da0cf819 100644 GIT binary patch literal 18367 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 literal 20044 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 diff --git a/tests/e2e/create-shapes.spec.ts-snapshots/draw-rectangle-then-move-it-openpencil-darwin.png b/tests/e2e/create-shapes.spec.ts-snapshots/draw-rectangle-then-move-it-openpencil-darwin.png index 410264b41d766674fa8b66e242f45848fd7fe953..30a9d5e33ad62e66dfe9c8d5ed27f2ab06a5a778 100644 GIT binary patch literal 18518 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 F{{W}9i1Ppd literal 19399 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 QkBK`OH)lF)UuSZ~U-kiq>i_@% literal 19395 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 B this.errors.push(err.message)) + page.on('console', (msg) => { + if (msg.type() === 'error') this.errors.push(msg.text()) + }) + } + + assertNoErrors() { + if (this.errors.length > 0) { + const messages = this.errors.join('\n') + this.errors.length = 0 + throw new Error(`Browser errors:\n${messages}`) + } } async waitForRender() {