Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci: fix browser-tests ubuntu 24.04 compat #2587

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 15 additions & 3 deletions .github/workflows/browser-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ on:
jobs:
browser-tests:
timeout-minutes: 30
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
# runs-on: ubuntu-latest
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

isn't latest 24.04? did ubuntu-latest cause a problem or are you just wanting to defend against that changing?

I think we should stick with ubuntu-latest because that's what Playwright advises with GitHub Actions:
https://playwright.dev/docs/ci-intro#setting-up-github-actions

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is, now, but it was unpredictably (A/B from GH side?) switching back and forth between 22.04 and 24.04 between CI runs for a period around at the time of PR creation, which was causing inconsistent CI results.

Not clear if the next transition of ubuntu-latest will be cleaner or similarly messy and require a similar workaround whenever it happens.

# This Chrome nightly image can no longer install browsers in Github CI for
# lack of some system dependencies:
# Package 'libasound2' has no installation candidate
Expand All @@ -23,9 +24,20 @@ jobs:
# ## the Selenium image is configured to not run as root, so we have to undo some of it
# env:
# HOME: /root # Firefox complains otherwise
env:
DEBIAN_FRONTEND: noninteractive
steps:
- name: Put unstable chrome where playwright would look for it
run: mv /opt/google/chrome /opt/google/chrome-unstable
- name: Install browser dependencies
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
ca-certificates \
libatomic1 libflite1 libgles2 libharfbuzz-icu0 libhyphen0 libmanette-0.2-0 libicu74 libsecret-1-0 libxslt1.1 woff2 \
ca-certificates fonts-liberation libatk-bridge2.0-0 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgbm1 libgcc1 libglib2.0-0 libgtk-3-0 libnspr4 libnss3 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 lsb-release wget xdg-utils \
libvpx9 libevent-2.1-7t64 libopus0 libgstreamer-plugins-base1.0-0 libgstreamer-gl1.0-0 libgstreamer-plugins-bad1.0-0 gstreamer1.0-libav
Comment on lines +32 to +39
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

are all of these extra deps required? or can any be left out to be more minimal

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

They may not all be required. Most if not all were previously installed under the hood by the playwright util.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • We should definitely install only the minimum needed
  • This seems like a future maintenance burden
  • Linebreaks seem inconsistent

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you sure changes needed to the action runner? This looks like a Playwright issue that was fixed in 1.45.


- uses: actions/checkout@v4
- uses: actions/setup-node@v3
with:
Expand All @@ -41,10 +53,10 @@ jobs:
run: npm ci --ignore-scripts
- name: Install Playwright Browsers
working-directory: browser-test
run: npx playwright install --with-deps
run: npm exec playwright install --with-deps
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Doesn't npx do the same thing if playwright is local?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

atm should be

Suggested change
run: npm exec playwright install --with-deps
run: npm exec -- playwright install --with-deps

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Doesn't npx do the same thing if playwright is local?

yep npx is nice shortcut here too

let's stick with npx since

  • less to write
  • don't have to remember --
  • official docs (if cli counts)
Screenshot 2024-12-13 at 1 22 47 pm

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

agreed, please leave that

- name: Run Playwright tests
working-directory: browser-test
run: npx playwright test
run: npm exec playwright test
- uses: actions/upload-artifact@v3
if: always()
with:
Expand Down
30 changes: 15 additions & 15 deletions browser-test/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion browser-test/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"test": "playwright test"
},
"devDependencies": {
"@playwright/test": "^1.41.2",
"@playwright/test": "^1.48.1",
"@types/node": "^20.11.16"
}
}
Loading