From fa8a62a5c1a5a96e6d28c369fa2db8e4ddfefe58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jind=C5=99ich=20B=C3=A4r?= Date: Thu, 6 Apr 2023 13:41:22 +0200 Subject: [PATCH] fix: collect header order for all browsers (#159) --- .github/workflows/model-updater.yml | 28 ++++++-- .../src/data_files/headers_order.json | 69 ------------------- packages/header-order-collector/collector.js | 22 +++--- 3 files changed, 35 insertions(+), 84 deletions(-) delete mode 100644 packages/header-generator/src/data_files/headers_order.json diff --git a/.github/workflows/model-updater.yml b/.github/workflows/model-updater.yml index 776e3808..305f24bf 100644 --- a/.github/workflows/model-updater.yml +++ b/.github/workflows/model-updater.yml @@ -22,23 +22,37 @@ jobs: with: node-version: 16 - - name: Cache Node Modules + - name: Cache node modules + browsers uses: actions/cache@v3 with: - path: | - node_modules - key: cache-${{ github.run_id }} + path: | + ~/.npm + ~/.cache/ms-playwright + key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }} - name: Install Dependencies run: npm ci - - name: Install Playwright browsers and collect HTTP header orders + - name: Install Playwright deps + run: npx playwright install + + - name: Install xvfb + run: | + sudo apt-get update + sudo apt-get -y install xvfb + + - name: Install Playwright browsers run: | - npx playwright install npx playwright install webkit npx playwright install chrome npx playwright install msedge - xvfb-run --auto-servernum -- node ./packages/header-order-collector/collector.js > ./packages/header-generator/src/data_files/headers_order.json + + - name: Install Playwright deps v2 + run: npx playwright install-deps + + - name: Collect HTTP header orders + run: | + xvfb-run -- node ./packages/header-order-collector/collector.js | tee ./packages/header-generator/src/data_files/headers-order.json - name: Generate model and update versions run: | diff --git a/packages/header-generator/src/data_files/headers_order.json b/packages/header-generator/src/data_files/headers_order.json deleted file mode 100644 index 1e9dc5d4..00000000 --- a/packages/header-generator/src/data_files/headers_order.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "chrome": [ - "Host", - "Connection", - "sec-ch-ua", - "sec-ch-ua-mobile", - "sec-ch-ua-platform", - "Upgrade-Insecure-Requests", - "User-Agent", - "Accept", - "Sec-Fetch-Site", - "Sec-Fetch-Mode", - "Sec-Fetch-User", - "Sec-Fetch-Dest", - "Referer", - "Accept-Encoding", - "Accept-Language", - "Cookie", - ":method", - ":authority", - ":scheme", - ":path", - "sec-ch-ua", - "sec-ch-ua-mobile", - "sec-ch-ua-platform", - "upgrade-insecure-requests", - "user-agent", - "accept", - "sec-fetch-site", - "sec-fetch-mode", - "sec-fetch-user", - "sec-fetch-dest", - "referer", - "accept-encoding", - "accept-language", - "cookie" - ], - "firefox": [ - "Host", - "User-Agent", - "Accept", - "Accept-Language", - "Accept-Encoding", - "Connection", - "Referer", - "Cookie", - "Upgrade-Insecure-Requests", - "Sec-Fetch-Dest", - "Sec-Fetch-Mode", - "Sec-Fetch-Site", - "Sec-Fetch-User", - ":method", - ":path", - ":authority", - ":scheme", - "user-agent", - "accept", - "accept-language", - "accept-encoding", - "referer", - "cookie", - "upgrade-insecure-requests", - "sec-fetch-dest", - "sec-fetch-mode", - "sec-fetch-site", - "sec-fetch-user", - "te" - ] -} diff --git a/packages/header-order-collector/collector.js b/packages/header-order-collector/collector.js index d1c69e43..43d7c838 100644 --- a/packages/header-order-collector/collector.js +++ b/packages/header-order-collector/collector.js @@ -20,13 +20,19 @@ async function getHeadersFor(launcher, httpVersion) { } else { await page.goto(`https://localhost:${HTTP2port}/`); } - await page.click('a'); - const headerNames = await page.evaluate(() => { - return JSON.parse(document.body.innerText); - }); - await browser.close(); - return headerNames; + try { + await page.click('a', { timeout: 1000 }); + + const headerNames = await page.evaluate(() => { + return JSON.parse(document.body.innerText); + }); + await browser.close(); + return headerNames; + } catch (e) { + // Webkit on Linux does not support http2 + return []; + } } (async () => { @@ -34,10 +40,10 @@ async function getHeadersFor(launcher, httpVersion) { v2(HTTP2port); const browserTypes = { - safari: () => playwright.webkit.launch(), + safari: (p) => playwright.webkit.launch(p), chrome: (p) => playwright.chromium.launch(p), firefox: (p) => playwright.firefox.launch(p), - edge: () => playwright.chromium.launch({ channel: 'msedge' }), + edge: (p) => playwright.chromium.launch({...p, channel: 'msedge' }), }; try {