From ec8d0629f34421778815197e50d156bcfd965ecf Mon Sep 17 00:00:00 2001 From: Andrey Lushnikov Date: Fri, 2 Jul 2021 11:55:46 -0800 Subject: [PATCH] feat: support msedge-beta channel (#7442) Fixes #7232 --- .github/workflows/tests_secondary.yml | 71 ++++++++++++++++++ bin/reinstall_chrome_beta_linux.sh | 11 ++- bin/reinstall_chrome_stable_linux.sh | 12 ++- bin/reinstall_msedge_beta_linux.sh | 23 ++++++ bin/reinstall_msedge_beta_mac.sh | 11 +++ bin/reinstall_msedge_beta_win.ps1 | 21 ++++++ src/cli/cli.ts | 36 +++++---- src/server/chromium/findChromiumChannel.ts | 1 + tests/headful.spec.ts | 26 ------- .../focused-input-chromium-darwin.png | Bin 5549 -> 0 bytes .../focused-input-chromium-linux.png | Bin 5566 -> 0 bytes .../focused-input-chromium-win32.png | Bin 5566 -> 0 bytes .../focused-input-firefox-darwin.png | Bin 5444 -> 0 bytes .../focused-input-firefox-linux.png | Bin 5602 -> 0 bytes .../focused-input-firefox-win32.png | Bin 5828 -> 0 bytes .../focused-input-webkit-darwin.png | Bin 19252 -> 0 bytes .../focused-input-webkit-linux.png | Bin 5805 -> 0 bytes .../focused-input-webkit-win32.png | Bin 4662 -> 0 bytes 18 files changed, 167 insertions(+), 45 deletions(-) create mode 100755 bin/reinstall_msedge_beta_linux.sh create mode 100755 bin/reinstall_msedge_beta_mac.sh create mode 100644 bin/reinstall_msedge_beta_win.ps1 delete mode 100644 tests/headful.spec.ts-snapshots/focused-input-chromium-darwin.png delete mode 100644 tests/headful.spec.ts-snapshots/focused-input-chromium-linux.png delete mode 100644 tests/headful.spec.ts-snapshots/focused-input-chromium-win32.png delete mode 100644 tests/headful.spec.ts-snapshots/focused-input-firefox-darwin.png delete mode 100644 tests/headful.spec.ts-snapshots/focused-input-firefox-linux.png delete mode 100644 tests/headful.spec.ts-snapshots/focused-input-firefox-win32.png delete mode 100644 tests/headful.spec.ts-snapshots/focused-input-webkit-darwin.png delete mode 100644 tests/headful.spec.ts-snapshots/focused-input-webkit-linux.png delete mode 100644 tests/headful.spec.ts-snapshots/focused-input-webkit-win32.png diff --git a/.github/workflows/tests_secondary.yml b/.github/workflows/tests_secondary.yml index 6714bf3d84..b4a8f5d259 100644 --- a/.github/workflows/tests_secondary.yml +++ b/.github/workflows/tests_secondary.yml @@ -381,6 +381,77 @@ jobs: name: edge-stable-win-test-results path: test-results + edge_beta_mac: + name: "Edge Beta (Mac)" + runs-on: macos-10.15 + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v2 + with: + node-version: 12 + - run: npm ci + env: + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 + - run: npm run build + - run: node lib/cli/cli install msedge-beta + - run: npm run ctest + env: + PWTEST_CHANNEL: msedge-beta + - run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json + if: always() + - uses: actions/upload-artifact@v1 + if: ${{ always() }} + with: + name: msedge-beta-mac-test-results + path: test-results + + edge_beta_win: + name: "Edge Beta (Win)" + runs-on: windows-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v2 + with: + node-version: 12 + - run: npm ci + env: + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 + - run: npm run build + - run: node lib/cli/cli install msedge-beta + - run: npm run ctest + shell: bash + env: + PWTEST_CHANNEL: msedge-beta + - uses: actions/upload-artifact@v1 + if: ${{ always() }} + with: + name: edge-beta-win-test-results + path: test-results + + edge_beta_linux: + name: "Edge Beta (Linux)" + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v2 + with: + node-version: 12 + - run: npm ci + env: + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 + - run: npm run build + - run: node lib/cli/cli install msedge-beta + - run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run ctest + env: + PWTEST_CHANNEL: msedge-beta + - run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json + if: always() + - uses: actions/upload-artifact@v1 + if: ${{ always() }} + with: + name: edge-beta-linux-test-results + path: test-results + chrome_beta_linux: name: "Chrome Beta (Linux)" runs-on: ubuntu-20.04 diff --git a/bin/reinstall_chrome_beta_linux.sh b/bin/reinstall_chrome_beta_linux.sh index 8a0a6876d7..afb9d87b56 100755 --- a/bin/reinstall_chrome_beta_linux.sh +++ b/bin/reinstall_chrome_beta_linux.sh @@ -2,15 +2,22 @@ set -e set -x +is_user_root () { [ "${EUID:-$(id -u)}" -eq 0 ]; } +if is_user_root; then + maybesudo="" +else + maybesudo="sudo" +fi + # 1. make sure to remove old beta if any. if dpkg --get-selections | grep -q "^google-chrome-beta[[:space:]]*install$" >/dev/null; then - sudo apt-get remove -y google-chrome-beta + $maybesudo apt-get remove -y google-chrome-beta fi # 2. download chrome beta from dl.google.com and install it. cd /tmp wget https://dl.google.com/linux/direct/google-chrome-beta_current_amd64.deb -sudo apt-get install -y ./google-chrome-beta_current_amd64.deb +$maybesudo apt-get install -y ./google-chrome-beta_current_amd64.deb rm -rf ./google-chrome-beta_current_amd64.deb cd - google-chrome-beta --version diff --git a/bin/reinstall_chrome_stable_linux.sh b/bin/reinstall_chrome_stable_linux.sh index 8c16080920..c5078f6403 100755 --- a/bin/reinstall_chrome_stable_linux.sh +++ b/bin/reinstall_chrome_stable_linux.sh @@ -2,16 +2,24 @@ set -e set -x +is_user_root () { [ "${EUID:-$(id -u)}" -eq 0 ]; } +if is_user_root; then + maybesudo="" +else + maybesudo="sudo" +fi + + # 1. make sure to remove old stable if any. if dpkg --get-selections | grep -q "^google-chrome[[:space:]]*install$" >/dev/null; then - sudo apt-get remove -y google-chrome + $maybesudo apt-get remove -y google-chrome fi # 2. download chrome stable from dl.google.com and install it. cd /tmp wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb -sudo apt-get install -y ./google-chrome-stable_current_amd64.deb +$maybesudo apt-get install -y ./google-chrome-stable_current_amd64.deb rm -rf ./google-chrome-stable_current_amd64.deb cd - google-chrome --version diff --git a/bin/reinstall_msedge_beta_linux.sh b/bin/reinstall_msedge_beta_linux.sh new file mode 100755 index 0000000000..dab12e346f --- /dev/null +++ b/bin/reinstall_msedge_beta_linux.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +set -e +set -x + +is_user_root () { [ "${EUID:-$(id -u)}" -eq 0 ]; } +if is_user_root; then + maybesudo="" +else + maybesudo="sudo" +fi + +if dpkg --get-selections | grep -q "^microsoft-edge-beta[[:space:]]*install$" >/dev/null; then + $maybesudo apt-get remove -y microsoft-edge-beta +fi + +curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /tmp/microsoft.gpg +$maybesudo install -o root -g root -m 644 /tmp/microsoft.gpg /etc/apt/trusted.gpg.d/ +$maybesudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/edge stable main" > /etc/apt/sources.list.d/microsoft-edge-dev.list' +rm /tmp/microsoft.gpg +$maybesudo apt-get update && $maybesudo apt-get install -y microsoft-edge-beta + +microsoft-edge-beta --version diff --git a/bin/reinstall_msedge_beta_mac.sh b/bin/reinstall_msedge_beta_mac.sh new file mode 100755 index 0000000000..fce4b6925a --- /dev/null +++ b/bin/reinstall_msedge_beta_mac.sh @@ -0,0 +1,11 @@ +#!/bin/bash +set -e +set -x + +cd /tmp +curl -o ./msedge_beta.pkg -k "$1" +# Note: there's no way to uninstall previously installed MSEdge. +# However, running PKG again seems to update installation. +sudo installer -pkg /tmp/msedge_beta.pkg -target / +rm -rf /tmp/msedge_beta.pkg +/Applications/Microsoft\ Edge\ Beta.app/Contents/MacOS/Microsoft\ Edge\ Beta --version diff --git a/bin/reinstall_msedge_beta_win.ps1 b/bin/reinstall_msedge_beta_win.ps1 new file mode 100644 index 0000000000..b7498688b3 --- /dev/null +++ b/bin/reinstall_msedge_beta_win.ps1 @@ -0,0 +1,21 @@ +$url = $args[0] + +Write-Host "Downloading Microsoft Edge Beta" +$wc = New-Object net.webclient +$msiInstaller = "$env:temp\microsoft-edge-beta.msi" +$wc.Downloadfile($url, $msiInstaller) + +Write-Host "Installing Microsoft Edge Beta" +$arguments = "/i `"$msiInstaller`" /quiet" +Start-Process msiexec.exe -ArgumentList $arguments -Wait +Remove-Item $msiInstaller + +$suffix = "\\Microsoft\\Edge\\Application\\msedge.exe" +if (Test-Path "${env:ProgramFiles(x86)}$suffix") { + (Get-Item "${env:ProgramFiles(x86)}$suffix").VersionInfo +} elseif (Test-Path "${env:ProgramFiles}$suffix") { + (Get-Item "${env:ProgramFiles}$suffix").VersionInfo +} else { + write-host "ERROR: failed to install Microsoft Edge" + exit 1 +} diff --git a/src/cli/cli.ts b/src/cli/cli.ts index cf8cc65758..0dcae0d23b 100755 --- a/src/cli/cli.ts +++ b/src/cli/cli.ts @@ -37,15 +37,17 @@ import * as utils from '../utils/utils'; const SCRIPTS_DIRECTORY = path.join(__dirname, '..', '..', 'bin'); -type BrowserChannel = 'chrome-beta'|'chrome'|'msedge'; -const allBrowserChannels: Set = new Set(['chrome-beta', 'chrome', 'msedge']); +type BrowserChannel = 'chrome-beta'|'chrome'|'msedge'|'msedge-beta'; +const allBrowserChannels: Set = new Set(['chrome-beta', 'chrome', 'msedge', 'msedge-beta']); const suggestedBrowsersToInstall = ['chromium', 'webkit', 'firefox', ...allBrowserChannels].map(name => `'${name}'`).join(', '); + const packageJSON = require('../../package.json'); const ChannelName = { 'chrome-beta': 'Google Chrome Beta', 'chrome': 'Google Chrome', 'msedge': 'Microsoft Edge', + 'msedge-beta': 'Microsoft Edge Beta', }; const InstallationScriptName = { @@ -63,6 +65,11 @@ const InstallationScriptName = { 'darwin': 'reinstall_msedge_stable_mac.sh', 'win32': 'reinstall_msedge_stable_win.ps1', }, + 'msedge-beta': { + 'darwin': 'reinstall_msedge_beta_mac.sh', + 'linux': 'reinstall_msedge_beta_linux.sh', + 'win32': 'reinstall_msedge_beta_win.ps1', + }, }; program @@ -129,7 +136,7 @@ program console.log(`Invalid installation targets: ${faultyArguments.map(name => `'${name}'`).join(', ')}. Expecting one of: ${suggestedBrowsersToInstall}`); process.exit(1); } - if (browserNames.has('chromium') || browserChannels.has('chrome-beta') || browserChannels.has('chrome') || browserChannels.has('msedge')) + if (browserNames.has('chromium') || browserChannels.has('chrome-beta') || browserChannels.has('chrome') || browserChannels.has('msedge') || browserChannels.has('msedge-beta')) browserNames.add('ffmpeg'); if (browserNames.size) await installBrowsers([...browserNames]); @@ -156,21 +163,20 @@ async function installBrowserChannel(channel: BrowserChannel) { throw new Error(`Cannot install ${ChannelName[channel]} on ${platform}`); const scriptArgs = []; - if (channel === 'msedge') { + if ((channel === 'msedge' || channel === 'msedge-beta') && platform !== 'linux') { const products = JSON.parse(await utils.fetchData('https://edgeupdates.microsoft.com/api/products')); - const stable = products.find((product: any) => product.Product === 'Stable'); - if (platform === 'win32') { - const arch = os.arch() === 'x64' ? 'x64' : 'x86'; - const release = stable.Releases.find((release: any) => release.Platform === 'Windows' && release.Architecture === arch); - const artifact = release.Artifacts.find((artifact: any) => artifact.ArtifactName === 'msi'); + const productName = channel === 'msedge' ? 'Stable' : 'Beta'; + const product = products.find((product: any) => product.Product === productName); + const searchConfig = ({ + darwin: {platform: 'MacOS', arch: 'universal', artifact: 'pkg'}, + win32: {platform: 'Windows', arch: os.arch() === 'x64' ? 'x64' : 'x86', artifact: 'msi'}, + } as any)[platform]; + const release = searchConfig ? product.Releases.find((release: any) => release.Platform === searchConfig.platform && release.Architecture === searchConfig.arch) : null; + const artifact = release ? release.Artifacts.find((artifact: any) => artifact.ArtifactName === searchConfig.artifact) : null; + if (artifact) scriptArgs.push(artifact.Location /* url */); - } else if (platform === 'darwin') { - const release = stable.Releases.find((release: any) => release.Platform === 'MacOS' && release.Architecture === 'universal'); - const artifact = release.Artifacts.find((artifact: any) => artifact.ArtifactName === 'pkg'); - scriptArgs.push(artifact.Location /* url */); - } else { + else throw new Error(`Cannot install ${ChannelName[channel]} on ${platform}`); - } } const shell = scriptName.endsWith('.ps1') ? 'powershell.exe' : 'bash'; diff --git a/src/server/chromium/findChromiumChannel.ts b/src/server/chromium/findChromiumChannel.ts index ab73e016ce..47cba155f8 100644 --- a/src/server/chromium/findChromiumChannel.ts +++ b/src/server/chromium/findChromiumChannel.ts @@ -36,6 +36,7 @@ function linux(channel: string): string[] | undefined { case 'chrome-beta': return ['/opt/google/chrome-beta/chrome']; case 'chrome-dev': return ['/opt/google/chrome-unstable/chrome']; case 'msedge-dev': return ['/opt/microsoft/msedge-dev/msedge']; + case 'msedge-beta': return ['/opt/microsoft/msedge-beta/msedge']; } } diff --git a/tests/headful.spec.ts b/tests/headful.spec.ts index d4cd5c0636..d2ea9dce5e 100644 --- a/tests/headful.spec.ts +++ b/tests/headful.spec.ts @@ -147,29 +147,3 @@ it('Page.bringToFront should work', async ({browserType, browserOptions}) => { await browser.close(); }); -it('focused input should produce the same screenshot', async ({browserType, browserOptions, browserName, platform, channel}, testInfo) => { - it.fail(channel === 'msedge' && platform === 'darwin', 'focus ring is black on MSEdge'); - it.fail(browserName === 'firefox' && platform === 'darwin', 'headless has thinner outline'); - it.fail(browserName === 'firefox' && platform === 'linux', 'headless has no outline'); - it.skip(browserName === 'webkit' && platform === 'linux', 'gtk vs wpe'); - it.skip(!!process.env.CRPATH); - - testInfo.snapshotSuffix = platform; - - const headful = await browserType.launch({...browserOptions, headless: false }); - const headfulPage = await headful.newPage(); - await headfulPage.setContent(''); - await headfulPage.focus('input'); - const headfulScreenshot = await headfulPage.screenshot(); - await headful.close(); - - const headless = await browserType.launch({...browserOptions, headless: true }); - const headlessPage = await headless.newPage(); - await headlessPage.setContent(''); - await headlessPage.focus('input'); - const headlessScreenshot = await headlessPage.screenshot(); - await headless.close(); - - expect(headfulScreenshot).toMatchSnapshot('focused-input.png'); - expect(headlessScreenshot).toMatchSnapshot('focused-input.png'); -}); diff --git a/tests/headful.spec.ts-snapshots/focused-input-chromium-darwin.png b/tests/headful.spec.ts-snapshots/focused-input-chromium-darwin.png deleted file mode 100644 index 327fce85373f711a318d02c046fec4fcdf2938a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5549 zcmeAS@N?(olHy`uVBq!ia0y~yU+}r zLn`LHy{qUQ7szn@;b*^QgBXFZ)~!dUO7{Ggn|1t;z+wJ{Id(W2kBg*yDW3oztRUU z-jvOWyR-L-+_f{?_20WX0Hqov*YY&H-}g_7-~asM=imDue{SEdzqNbE>eVgwcW#SQ3r~!e}6jwiAG9U^Ea$ z17Wn;JlZ`N?IVqL6oDn-XdsLR!sxikX!pPYm<`D4BmHAIE8%nXedo-HAQL=Y{an^L HB{Ts52!c=( diff --git a/tests/headful.spec.ts-snapshots/focused-input-chromium-linux.png b/tests/headful.spec.ts-snapshots/focused-input-chromium-linux.png deleted file mode 100644 index ca5082b3bfc7d3d477082b52b1ab15b5beb9c09e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5566 zcmeAS@N?(olHy`uVBq!ia0y~yUZ@5XadCZT(~SN6{GQEY25K~zebmJF z@_*SKJ9kRne)}z;`ayJTe0=}!-@kXJgUmmZmd{{gYb!f{{`|)eA12P3J6ASKyyj%y zcInq&t8}KH{`l#W(RUf3!iJk~cpHFrCHENG+1dU3nXpl!+OE<5Q2l#7pzMMBCzKU{ zG%okz^$ZD;H|{a)h|xPPk^H7?x8X5~%O-#CxqjfCH-G+diU0TFf%Z4-zk0rw{oMKU z$IEuhzW(}40OaAAm@~GFK*@x#YUT%b@7}ervXb)m_kaBN?_Yu04^D@zzPe-AE~(jP z)81)<{IEI7=if_EB52U*ZvY9Phdv1oMvJ#morF^MXb6plkOC;v;V%G3lgVfZjV2S~ z8VjR&Wi+ph=9SUB0;*Ms>RpT$7^4NoXn`@BS4Inr(eC@`=m*vTxX~(--c{s&hGTca URO0h%DnZ4Pr>mdKI;Vst0Gx!6hX4Qo diff --git a/tests/headful.spec.ts-snapshots/focused-input-chromium-win32.png b/tests/headful.spec.ts-snapshots/focused-input-chromium-win32.png deleted file mode 100644 index ca5082b3bfc7d3d477082b52b1ab15b5beb9c09e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5566 zcmeAS@N?(olHy`uVBq!ia0y~yUZ@5XadCZT(~SN6{GQEY25K~zebmJF z@_*SKJ9kRne)}z;`ayJTe0=}!-@kXJgUmmZmd{{gYb!f{{`|)eA12P3J6ASKyyj%y zcInq&t8}KH{`l#W(RUf3!iJk~cpHFrCHENG+1dU3nXpl!+OE<5Q2l#7pzMMBCzKU{ zG%okz^$ZD;H|{a)h|xPPk^H7?x8X5~%O-#CxqjfCH-G+diU0TFf%Z4-zk0rw{oMKU z$IEuhzW(}40OaAAm@~GFK*@x#YUT%b@7}ervXb)m_kaBN?_Yu04^D@zzPe-AE~(jP z)81)<{IEI7=if_EB52U*ZvY9Phdv1oMvJ#morF^MXb6plkOC;v;V%G3lgVfZjV2S~ z8VjR&Wi+ph=9SUB0;*Ms>RpT$7^4NoXn`@BS4Inr(eC@`=m*vTxX~(--c{s&hGTca URO0h%DnZ4Pr>mdKI;Vst0Gx!6hX4Qo diff --git a/tests/headful.spec.ts-snapshots/focused-input-firefox-darwin.png b/tests/headful.spec.ts-snapshots/focused-input-firefox-darwin.png deleted file mode 100644 index ee6ca12b5c869bc66d7fb3dfd2b606e41f7adaa5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5444 zcmeAS@N?(olHy`uVBq!ia0y~yUatbh@ym0=U#WpNPAa7~Z_B%t8K zzyhQi3>XDKqK8-e}4Lx`fZM^|MT#D*&xw>Icx`BCZy~I>HAO>&ivr^ z^ZuL8!eDcrz2Rz*zn{K&w;BTzQ2NX*S%!yUObS5e0UO2%sbFIpD$Uss98Ubq@kbe= zNSGng4Q%}kb%sqn3>-k!2L22wl3=$a%wsrVgkb`c!fB2MpgM-nEDqBkUU&YwH*?zMX(L+cKPa!OhK}kU#J`m+ipgOgo9l^y8Bu?makt zAILcZ5Pv(&0E;ptf*sD#!r3q?IT{GSG%y+nqk%A5CNPW^jG+2pw00N`gwb{a!)Rj( zm<>h)VKfj%`wpWWs0Ls*80|%l2Eu4Z5ts%>17S1}Na!tpdE{u_D-IMh1?_H~4_84NdQb7}l>lSI1Uo0rt@bCPo1@ zK?a~sh-qLCfpxMt0M#e3GAZ~dfjtYhf>8iw97h9?b%2Y-VTKC>3y=x6mu5zSoZVQz zNfu}k*hxv&Fx!vd4v7LYhP?LLoc7u~^_6>$R4Y9EcmDWB*>4{oKK^&l9~4$~1?kKW z-hMP$_g?N;*^T{wFFu*``}=La-#h+&O|1D9JsC>g@qT~! z*v_uju6OzK>E3T7fbtJQ)0q{3G{cAgs#uc+-ZV2RNhnv1hR|pTf%6ys!gn;8j3$%O zWI|j+Wi+ph=9SUBGMZO_jn>gX7!3rpZtQ67Fj_l|)()cu<7mM+S}p0L5E`z75pUXO@geCy~sF>ye diff --git a/tests/headful.spec.ts-snapshots/focused-input-firefox-win32.png b/tests/headful.spec.ts-snapshots/focused-input-firefox-win32.png deleted file mode 100644 index ff91c3823175416b20e7e7429f451301a4bd50b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5828 zcmeAS@N?(olHy`uVBq!ia0y~yUrVrdjvtUAN|UyLR{D)2cOQw{L!z1fIb1Ku-Bd{PXMFUteQE9(+*v=OM$62%8^y z9Dnqf6o4WJVweAnS}OgV9t5khct`Gn@z+AcfcE`5HcGvN!;p z(XjI!>w)IU{ejPbVVS(K+zRCNzX@OV)O^j;`Q~?g`uX$6vo_2AK7P8eKnd&xn`PCE zA3h|Re(Rt97!<-^|IP-6#TmQn`+h%syJOc+0S12ku-!Yp0}W^JKem^lqHM1uQ2WQn zufImD+y40e|DX4NeERwG+~SFUe}2CXjKJN^+aFKA`n#}XryR(dvb{Ht?qvsRt}v3T zx%l{-_5u0$^~bNC{k`#4PWt@r6{~0We>{J^9%Ov~`-2QSZsojJT5vP@&4(ma9Z*d8 zd`Mu}Qwp>cl!DqF&)B81tIHpnf4`0qDEaK?S#anx{MiYK8UZ!1ryOQLgcHFr!q74* z$uJrSpd>b$5=H}Iv`k=N7%doq`Cv2&IY%n@xfE)ebx7-3U1R<|#5!A*N;MTkA^p*?x@9hI4#>XKOeHjj?GpCvRwB^ZNK(5BZ8DsDmBdr2kh7B!O^V3w$z=APR@7Z^aSBv z%?iC28WbrMqiry+Zxy#OXk54W33J!@TI4cr<@V06-V#5EMo-o)8CCq6+S_ERGkn;Y zH(Su%5S^X+XXulGCo{6@oT=dN!&8s?nq7lOqM?KDTo8@DtB2!f?5S$Zh|LD4?at`U zLT#;<^;+vUkq->+FBD6yK#-o4%xK!R4tr!;U8V>&R{Zeyi-{xJuE>mL_y(+#Gk(8+ zup_dX)lui|c5B1aF|Ski<#f5&xEfNQaFr%^>;n(qBaJx;Z0&z(ipr?~qzt9xYp*7)NIzt?rw6G*M`Mjfr)_xe)I(Z9SEk@~vE8-@1n z=G2nJX9UwoPcpauddrN2cWFo3l*ZKBaYe$vIoQ7^Hk+CjM_#-etx==bJHMBh{#oo_ zZNEh!;onvU{n6FFD{**g+EPTL^V^!UB?5K}4%m?oa>b5d6*yr1%g;zm$xTrVOb9%L z!xlmgzlZP+VPFAJz(@(O&3}9V6aWjfBP1Fj(J0jSA*TSK067K7 zDa0u=BpQWPOu!U?DF9OdrV#%+&IxJ&1poyA1poyA1%Wbyd=P8_)d#3PK=lEt4^Vx8 z>VuFAWpK?19(=u?J#L tz(oLsxGi8+39Kr4o_XE>oXfE>6f+cEdh>MFNBlol8Fua|?kuu2{RdRluF3!a diff --git a/tests/headful.spec.ts-snapshots/focused-input-webkit-linux.png b/tests/headful.spec.ts-snapshots/focused-input-webkit-linux.png deleted file mode 100644 index f76edad846f564d68fe624236e85a311e9097015..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5805 zcmeAS@N?(olHy`uVBq!ia0y~yUK9HUP@Zn>qLN_y2ym{_&UT*Tr|TZ+mm3 zyZZRar;9RkIC2XngLSqpl-I^;nz3xPiK5T)wfa|D8itlYTDnD z8_W-4M+D&wH+0EK2D8DDabVJ|5{8)DJN9csPV&+G61eD=qO&)I#<#w)jewSL^p9ezA|dHtU6Z+<-7E35}f01FVdQ&MBb@0M}|9Pyhe` diff --git a/tests/headful.spec.ts-snapshots/focused-input-webkit-win32.png b/tests/headful.spec.ts-snapshots/focused-input-webkit-win32.png deleted file mode 100644 index c587794530d1d08b4dad0b4df2d0db54ad8b7b6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4662 zcmeAS@N?(olHy`uVBq!ia0y~yU|H*YfkE)K zr;B4q#hkZyb^TUHOEg?8Di&(8U}E*uzNmWj41-AVO9Kh+u5-;IF}a)z1Qb?0;t;y> z@Sb+Y&&q2-)@xtP-g|ZOU(@^7PM|h;f63kq2mL69XFqgMuRiGXui} zg$AGlJOmB^WmW$C`o2CN2=emg&7W^>$}gXpo}O+Y^X~oo+hGh04du)~e*Ua9n;jb) zdvo#oJR71AcoBQi;<1^1c-^}@TGZ-jXb5i=j?%lgzzkYo% zp`fy|vY_C>rw_BE)`oQ-O){DZRJeHY;=OzKo}b6T!0@1(^+VClnphbbnK^Uk=9a10 zT`IAvjn$d%4RZ68zkdZ^EMLC-dh71{@87*;k(ZaZuNDJ3O8>vqlC^8se)R_hXZ91@ z13*fJBLPSXu^0eJP9_PUD*XN?LivaNOh2AJP5ldu8-@eNn16hKe}8@V)vT@O;?v*W z^ZW4D2N;U8>i&Mc{IKB1t_U5m%P&i+tE)E$e>4nReKl$03?H@Tg9#>5H-X`}Am{bo z6A^EiO@^TZYw{PEq!nxr;*atr(_pnpNv&dvjpioQQHIf`8&cEFK;s9q Y^Z%k>)g4#(fI|xmp00i_>zopr0M;U>TL1t6