From 14a57a788b504536e9bcb3d2e2ac0a01769b8afe Mon Sep 17 00:00:00 2001 From: Yury Semikhatsky Date: Fri, 18 Aug 2023 14:30:43 -0700 Subject: [PATCH] test: screenshot of css transformation (#26533) Failing tests for #26447. --- tests/library/screenshot.spec.ts | 49 ++++++++++++++++++ ...ransform-with-device-pixels-1-chromium.png | Bin 0 -> 13763 bytes ...transform-with-device-pixels-1-firefox.png | Bin 0 -> 47925 bytes tests/page/page-screenshot.spec.ts | 44 ++++++++++++++++ ...hould-capture-css-transform-1-chromium.png | Bin 0 -> 6013 bytes ...should-capture-css-transform-1-firefox.png | Bin 0 -> 19779 bytes 6 files changed, 93 insertions(+) create mode 100644 tests/library/screenshot.spec.ts-snapshots/element-screenshot-page-screenshot-should-capture-css-transform-with-device-pixels-1-chromium.png create mode 100644 tests/library/screenshot.spec.ts-snapshots/element-screenshot-page-screenshot-should-capture-css-transform-with-device-pixels-1-firefox.png create mode 100644 tests/page/page-screenshot.spec.ts-snapshots/page-screenshot-should-capture-css-transform-1-chromium.png create mode 100644 tests/page/page-screenshot.spec.ts-snapshots/page-screenshot-should-capture-css-transform-1-firefox.png diff --git a/tests/library/screenshot.spec.ts b/tests/library/screenshot.spec.ts index a99c3f7e70..e8bdac3313 100644 --- a/tests/library/screenshot.spec.ts +++ b/tests/library/screenshot.spec.ts @@ -444,4 +444,53 @@ browserTest.describe('element screenshot', () => { expect(screenshot).toMatchSnapshot('element-larger-than-viewport-dsf-css-size.png'); await context.close(); }); + + browserTest('page screenshot should capture css transform with device pixels', async function({ browser, browserName }) { + browserTest.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/26447' }); + browserTest.fixme(browserName === 'webkit'); + const context = await browser.newContext({ + viewport: { width: 500, height: 500 }, + deviceScaleFactor: 3, + }); + const page = await context.newPage(); + await page.setContent(` + +
+
+
+
+
+ `); + + await expect(page).toHaveScreenshot({ scale: 'device' }); + await context.close(); + }); }); diff --git a/tests/library/screenshot.spec.ts-snapshots/element-screenshot-page-screenshot-should-capture-css-transform-with-device-pixels-1-chromium.png b/tests/library/screenshot.spec.ts-snapshots/element-screenshot-page-screenshot-should-capture-css-transform-with-device-pixels-1-chromium.png new file mode 100644 index 0000000000000000000000000000000000000000..39823a32db57b473aa75a0fba7fafb5e6530b6ff GIT binary patch literal 13763 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 literal 0 HcmV?d00001 diff --git a/tests/library/screenshot.spec.ts-snapshots/element-screenshot-page-screenshot-should-capture-css-transform-with-device-pixels-1-firefox.png b/tests/library/screenshot.spec.ts-snapshots/element-screenshot-page-screenshot-should-capture-css-transform-with-device-pixels-1-firefox.png new file mode 100644 index 0000000000000000000000000000000000000000..a9fab7d00e2ca6f0a7cc5b1d353efa462b8bc372 GIT binary patch literal 47925 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 literal 0 HcmV?d00001 diff --git a/tests/page/page-screenshot.spec.ts b/tests/page/page-screenshot.spec.ts index 7ee3900896..bea03d1d30 100644 --- a/tests/page/page-screenshot.spec.ts +++ b/tests/page/page-screenshot.spec.ts @@ -840,3 +840,47 @@ it('should throw if screenshot size is too large', async ({ page, browserName, i expect(exception.message).toContain('Cannot take screenshot larger than 32767'); } }); + +it('page screenshot should capture css transform', async function({ page, browserName, isElectron }) { + it.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/26447' }); + it.fixme(browserName === 'webkit'); + it.fixme(isElectron, 'Returns screenshot of a different size.'); + await page.setContent(` + +
+
+
+
+
+ `); + + await expect(page).toHaveScreenshot(); +}); diff --git a/tests/page/page-screenshot.spec.ts-snapshots/page-screenshot-should-capture-css-transform-1-chromium.png b/tests/page/page-screenshot.spec.ts-snapshots/page-screenshot-should-capture-css-transform-1-chromium.png new file mode 100644 index 0000000000000000000000000000000000000000..d29a2b4ab28107e6d276b8c40c030aa3fec51c96 GIT binary patch literal 6013 zcmeAS@N?(olHy`uVBq!ia0y~yUJ{|d=oD`{;&kD>n3{u@*RQ<>5sl%UjF#z;r7Q@ zC#wg~2S-E)gN3oayuF-yzg+L;#fw+^GXm8rJh+v#F~X{_gJgy8U18 zmM4Gy_xI!Z_50^N&;l9BwTEGj;pPMo({3um4yJqOn)vyb+ksMEgJ?374YT|#2K{6) z9w7gKYX#$uq%%z*(|2$%7P!u2Wd<@o82U7%KTr~WkP4CdA)wE|3^eBZcc?Kl1sR;< z-o1sY<`aG(`Qr-b2czv}WyhX1v!@*dn!%8Lj{Crh>+Db-M?)z@`1M(q3O2oDrafoY z&YgRIpV*(X=F|VhgEX9J7H`OY^7Y`sify~I!Oq*@#&W>)OHqFQoHy@gfnBzS5op(r zRY1ESrsc*ltg{6BwZV*Wg5k0J%@5Ld?|%H|K>{RrfAj!-l5h&B-n_i*SU5xzXB@+) zd7J;AZHj;Q*0&avIT_}AFg$6Fd;5Mi#1;#nEi-PjR7gUMzWRh!LH?)?C@UqHayG=A zc)$6bC7+c#>~zZ6l)&QMg%+;nPV-a6UT?(o+i4 z^Y?f1T# zcmhhAbLP+SsRb2L4wFU;1R53ygS8}n;8Roi{@#rnw`TnUl@bg|>vYAsk6v;A(EfSy z`cW&GhV+NN&0*nQ$osA&%H9Cw1MbGy)l9G;&hUn+vY^Vu?F!yjY#7G$m z0F@H@B%j}xIey!%&^Y5tmH lAdGh1M_|`|L{!IGTJ{*sKGW=F5fru6i9%Z;Y4 zV+PUeN^XI*l>5V5{wV@Fd#}OVeW~S;(&KPk{Gc)5eU*q)r>W#|VkD?@nR)gTmy>PP zt*XVhwOjCkmq2?$e!h3;5xbg$WSZC zbCi*tr}pn&mi9JQ$X8q;NvyJkvyd!ji(ceC@?DN+6p0EnBD5tNbX7UQoMNsyp9qB( zOH7IinQ{wQA@6a8C|Ds)F<^~~^@))yWNxJvIWKsto!z>z$e_Oi{tr*)_}{*m&!=ae zX59MC_mJA1%v$vW*Q%w{rAQXzY;_+m@zVxsTp4nIPg7uYhN=ILbbC1`WKw$}h)rud zb=&Ozj0HfQxv#n=&g?wfa=>=VwI_MN$_bD#Jqc`D)A0hI?x}Q7kF_H%6x0bko_$o7 zvR9vb2{|hc>qX{!-wb|$1Dv`U1lXJNaVJtwvID5nDmZASX91WE8-2b z+5goHk;s3W6H-egB&9*ydtyQQ1VB$E*w$I&>f`uH7Y(5})wR#FHQ85N7uZ!vN6-5! zgEJ`U?or@^65}y&0h?FN-*H{Ah=p0u@t=`X!DgrTJ6xUQVvu5O{#-!swOY3b0)OJB zgq5Ah`s*i1z3x6tly{Unk&T^bW9(EU%NzhVCavPa(9D*BsRzd)!`A>o^%@SIJ5vB1 zbE##Z$u-bKcLCSLa?20O(-nOfl5At)Q_F!*{Wom(y5FkLu!A_xsgt9@mex}x zNZry4ww&Qq!OUP*&kKDaNOGN>#L1Z?6vE@RWUy<2TbSs?&|`pAAur z!)=pW`JQPwd8Jd?s!^|F2I^{dNZb(>KXsSedrKOb4!!$c|2X?T--o5{!H0a-*fW0G zeLGNydK<@E1!KSv)mS95SZ02Y2PCtU^+OqoKwd>(a(pl!ShQuWNWq(7AHm7&&}nRm zj6{A~O0^z`3!TVXv67bvftnxrzcdE_jbDueAodNmo~=M*07|u-$bQK>y@Fp1rv8~@ z>d3KRYCbWQM0KcCQUt(5ivh{iAyP`p61HZL3j7ol$u}0IiOJh>+z=B%-|J$l*H3p#RLhICgU1e|HL1fn#;P&C5+Qi zt{=Re<;h~Wl%xQ7fW6B$)yq%Yl)ru!w!x#1z~g6MXuKPfh)kd6uYV1Heg`<;fw&tj z4zYk4bTw*vmo@1;_WbbN$0gA1xC>O2j%APk_#w4{ieCf7n@&esR242efUp#%*FDv3ZC6d^2J_^MNtQU z-Ddo{_~xD}G0fBP;}L8CkFSJXW5bP`r9Xm%OJQGGCt-RNEmokM=i3@2(_oH@KH2*T zSP%|QkfNfjbN!J;ap1^qU$=m>$FKr{nYWXfVh;sh-WPLp(1ioxFKCZp+Lp0~6i#WL zk8KL5LLhW;uY7pu+)j$0+V9vDj;WcxN`Xu*?em&D4Xheg^r@Nb}M&ecliIZRtB4tD)Er&H&?tDFR4bejVh86If^ zM7lb~v)$~fdAk@n|LNV;iW_tiHWjuzR}TfcO(79zQ)gNb7GHWg=u-A^Lw((vH2OeB zb@qqt)qUyd8vh{taG(vK;*RgdT>>-C0E7sNk}%0^0JC|#irfjVQMfE0aR|VgXN|y2 z0(Vm>=6n-_k&e8(Dh*2xRT~ZBm2Q)urQy?*cqn z<4LG~o1r4%878}gWb=iDWD}B2NH!tagk(QB3MU6Vgk+QRH}-6gPy<2@2sI$ofKUTM z4TighJVzcRz%V{C5>&;*k~k2AkBq`U!@@@2v6+^ c0>yZFH+Q57mW%Z8<7jB%OG^^IjZfY3AIJioasU7T literal 0 HcmV?d00001