openverse-frontend icon indicating copy to clipboard operation
openverse-frontend copied to clipboard

Update the Playwright version

Open obulat opened this issue 3 years ago â€ĸ 11 comments

Description

This PR updates the Playwright version a newer one, 1.24. This will allow us to use HAR recordings introduced in version 1.23. We pin the version to prevent accidental test failure due to changes in browser versions, as is advised in Playwright docs.

There were some problems with visual regression tests for RTL in version 1.25, see comments for more details.

Testing Instructions

Playwright CI tests should pass.

Developer Certificate of Origin

Developer Certificate of Origin
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.


Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.

obulat avatar Aug 11 '22 15:08 obulat

Storybook and Tailwind configuration previews: Ready

Storybook: https://wordpress.github.io/openverse-frontend/_preview/1646 Tailwind: https://wordpress.github.io/openverse-frontend/_preview/1646/tailwind

Please note that GitHub pages takes a little time to deploy newly pushed code, if the links above don't work or you see old versions, wait 5 minutes and try again.

You can check the GitHub pages deployment action list to see the current status of the deployments.

github-actions[bot] avatar Aug 11 '22 15:08 github-actions[bot]

Size Change: -1.64 kB (0%)

Total Size: 767 kB

Filename Size Change
./.nuxt/dist/client/235.js 0 B -273 B (removed) 🏆
./.nuxt/dist/client/235.modern.js 0 B -277 B (removed) 🏆
./.nuxt/dist/client/236.js 0 B -1.85 kB (removed) 🏆
./.nuxt/dist/client/app.js 109 kB -819 B (-1%)
./.nuxt/dist/client/app.modern.js 102 kB -754 B (-1%)
./.nuxt/dist/client/runtime.js 2.67 kB -33 B (-1%)
./.nuxt/dist/client/runtime.modern.js 2.68 kB -32 B (-1%)
./.nuxt/dist/client/228.js 273 B +273 B (new file) 🆕
./.nuxt/dist/client/228.modern.js 277 B +277 B (new file) 🆕
./.nuxt/dist/client/229.js 1.85 kB +1.85 kB (new file) 🆕
â„šī¸ View Unchanged
Filename Size Change
./.nuxt/dist/client/commons/app.js 87.8 kB 0 B
./.nuxt/dist/client/commons/app.modern.js 76.7 kB 0 B
./.nuxt/dist/client/components/loading-icon.js 746 B 0 B
./.nuxt/dist/client/components/loading-icon.modern.js 751 B 0 B
./.nuxt/dist/client/components/table-sort-icon.js 508 B 0 B
./.nuxt/dist/client/components/table-sort-icon.modern.js 512 B 0 B
./.nuxt/dist/client/components/v-all-results-grid.js 4.13 kB 0 B
./.nuxt/dist/client/components/v-all-results-grid.modern.js 4.01 kB 0 B
./.nuxt/dist/client/components/v-audio-cell.js 344 B 0 B
./.nuxt/dist/client/components/v-audio-cell.modern.js 349 B 0 B
./.nuxt/dist/client/components/v-audio-details.js 1.66 kB 0 B
./.nuxt/dist/client/components/v-audio-details.modern.js 1.65 kB 0 B
./.nuxt/dist/client/components/v-audio-track-skeleton.js 1.01 kB 0 B
./.nuxt/dist/client/components/v-audio-track-skeleton.modern.js 1.02 kB 0 B
./.nuxt/dist/client/components/v-audio-track.js 4.55 kB 0 B
./.nuxt/dist/client/components/v-audio-track.modern.js 4.51 kB 0 B
./.nuxt/dist/client/components/v-back-to-search-results-link.js 570 B 0 B
./.nuxt/dist/client/components/v-back-to-search-results-link.modern.js 575 B 0 B
./.nuxt/dist/client/components/v-bone.js 685 B 0 B
./.nuxt/dist/client/components/v-bone.modern.js 690 B 0 B
./.nuxt/dist/client/components/v-box-layout.js 1.19 kB 0 B
./.nuxt/dist/client/components/v-box-layout.modern.js 1.19 kB 0 B
./.nuxt/dist/client/components/v-content-link.js 1.06 kB 0 B
./.nuxt/dist/client/components/v-content-link.modern.js 1.04 kB 0 B
./.nuxt/dist/client/components/v-content-page.js 467 B 0 B
./.nuxt/dist/client/components/v-content-page.modern.js 471 B 0 B
./.nuxt/dist/client/components/v-content-report-button.js 763 B 0 B
./.nuxt/dist/client/components/v-content-report-button.modern.js 773 B 0 B
./.nuxt/dist/client/components/v-content-report-form.js 3.78 kB 0 B
./.nuxt/dist/client/components/v-content-report-form.modern.js 3.59 kB 0 B
./.nuxt/dist/client/components/v-content-report-popover.js 4.45 kB 0 B
./.nuxt/dist/client/components/v-content-report-popover.modern.js 4.26 kB 0 B
./.nuxt/dist/client/components/v-copy-button.js 3.97 kB 0 B
./.nuxt/dist/client/components/v-copy-button.modern.js 3.98 kB 0 B
./.nuxt/dist/client/components/v-copy-license.js 2.94 kB 0 B
./.nuxt/dist/client/components/v-copy-license.modern.js 2.91 kB 0 B
./.nuxt/dist/client/components/v-copy-license/components/v-error-image/components/v-media-reuse/components/v-search-grid/09090664.js 9.4 kB 0 B
./.nuxt/dist/client/components/v-copy-license/components/v-error-image/components/v-media-reuse/components/v-search-grid/09090664.modern.js 9.38 kB 0 B
./.nuxt/dist/client/components/v-dmca-notice.js 743 B 0 B
./.nuxt/dist/client/components/v-dmca-notice.modern.js 753 B 0 B
./.nuxt/dist/client/components/v-error-image.js 1.69 kB 0 B
./.nuxt/dist/client/components/v-error-image.modern.js 1.68 kB 0 B
./.nuxt/dist/client/components/v-error-section.js 372 B 0 B
./.nuxt/dist/client/components/v-error-section.modern.js 375 B 0 B
./.nuxt/dist/client/components/v-full-layout.js 1.55 kB 0 B
./.nuxt/dist/client/components/v-full-layout.modern.js 1.55 kB 0 B
./.nuxt/dist/client/components/v-grid-skeleton.js 1.61 kB 0 B
./.nuxt/dist/client/components/v-grid-skeleton.modern.js 1.62 kB 0 B
./.nuxt/dist/client/components/v-image-cell-square.js 1.01 kB 0 B
./.nuxt/dist/client/components/v-image-cell-square.modern.js 1.02 kB 0 B
./.nuxt/dist/client/components/v-image-cell.js 1.43 kB 0 B
./.nuxt/dist/client/components/v-image-cell.modern.js 1.42 kB 0 B
./.nuxt/dist/client/components/v-image-details.js 1.44 kB 0 B
./.nuxt/dist/client/components/v-image-details.modern.js 1.43 kB 0 B
./.nuxt/dist/client/components/v-image-grid.js 2.57 kB 0 B
./.nuxt/dist/client/components/v-image-grid.modern.js 2.46 kB 0 B
./.nuxt/dist/client/components/v-license-tab-panel.js 923 B 0 B
./.nuxt/dist/client/components/v-license-tab-panel.modern.js 918 B 0 B
./.nuxt/dist/client/components/v-load-more.js 815 B 0 B
./.nuxt/dist/client/components/v-load-more.modern.js 714 B 0 B
./.nuxt/dist/client/components/v-media-license.js 801 B 0 B
./.nuxt/dist/client/components/v-media-license.modern.js 809 B 0 B
./.nuxt/dist/client/components/v-media-reuse.js 1.03 kB 0 B
./.nuxt/dist/client/components/v-media-reuse.modern.js 1.03 kB 0 B
./.nuxt/dist/client/components/v-media-reuse/pages/image/_id.js 2.94 kB 0 B
./.nuxt/dist/client/components/v-media-reuse/pages/image/_id.modern.js 2.91 kB 0 B
./.nuxt/dist/client/components/v-media-tag.js 429 B 0 B
./.nuxt/dist/client/components/v-media-tag.modern.js 433 B 0 B
./.nuxt/dist/client/components/v-meta-search-form.js 2.7 kB 0 B
./.nuxt/dist/client/components/v-meta-search-form.modern.js 2.66 kB 0 B
./.nuxt/dist/client/components/v-meta-source-list.js 2.06 kB 0 B
./.nuxt/dist/client/components/v-meta-source-list.modern.js 2.02 kB 0 B
./.nuxt/dist/client/components/v-modal.js 875 B 0 B
./.nuxt/dist/client/components/v-modal.modern.js 877 B +1 B (0%)
./.nuxt/dist/client/components/v-no-results.js 2.27 kB 0 B
./.nuxt/dist/client/components/v-no-results.modern.js 2.23 kB 0 B
./.nuxt/dist/client/components/v-radio.js 1.51 kB 0 B
./.nuxt/dist/client/components/v-radio.modern.js 1.47 kB 0 B
./.nuxt/dist/client/components/v-related-audio.js 1.23 kB 0 B
./.nuxt/dist/client/components/v-related-audio.modern.js 1.24 kB 0 B
./.nuxt/dist/client/components/v-related-images.js 3.14 kB 0 B
./.nuxt/dist/client/components/v-related-images.modern.js 3.02 kB 0 B
./.nuxt/dist/client/components/v-report-desc-form.js 965 B 0 B
./.nuxt/dist/client/components/v-report-desc-form.modern.js 964 B 0 B
./.nuxt/dist/client/components/v-row-layout.js 1.72 kB 0 B
./.nuxt/dist/client/components/v-row-layout.modern.js 1.73 kB 0 B
./.nuxt/dist/client/components/v-scroll-button.js 804 B 0 B
./.nuxt/dist/client/components/v-scroll-button.modern.js 809 B 0 B
./.nuxt/dist/client/components/v-search-grid.js 5.06 kB 0 B
./.nuxt/dist/client/components/v-search-grid.modern.js 4.99 kB 0 B
./.nuxt/dist/client/components/v-search-results-title.js 673 B 0 B
./.nuxt/dist/client/components/v-search-results-title.modern.js 666 B 0 B
./.nuxt/dist/client/components/v-search-type-radio.js 831 B 0 B
./.nuxt/dist/client/components/v-search-type-radio.modern.js 820 B 0 B
./.nuxt/dist/client/components/v-server-timeout.js 298 B 0 B
./.nuxt/dist/client/components/v-server-timeout.modern.js 303 B 0 B
./.nuxt/dist/client/components/v-sketch-fab-viewer.js 991 B 0 B
./.nuxt/dist/client/components/v-sketch-fab-viewer.modern.js 892 B 0 B
./.nuxt/dist/client/components/v-skip-to-content-container.js 888 B 0 B
./.nuxt/dist/client/components/v-skip-to-content-container.modern.js 891 B 0 B
./.nuxt/dist/client/components/v-snackbar.js 977 B 0 B
./.nuxt/dist/client/components/v-snackbar.modern.js 982 B -1 B (0%)
./.nuxt/dist/client/components/v-sources-table.js 14.3 kB 0 B
./.nuxt/dist/client/components/v-sources-table.modern.js 14.3 kB 0 B
./.nuxt/dist/client/components/v-tab-panel.js 689 B 0 B
./.nuxt/dist/client/components/v-tab-panel.modern.js 683 B 0 B
./.nuxt/dist/client/components/v-tab.js 1.73 kB 0 B
./.nuxt/dist/client/components/v-tab.modern.js 1.71 kB 0 B
./.nuxt/dist/client/components/v-tabs.js 779 B 0 B
./.nuxt/dist/client/components/v-tabs.modern.js 766 B 0 B
./.nuxt/dist/client/components/v-warning-suppressor.js 298 B 0 B
./.nuxt/dist/client/components/v-warning-suppressor.modern.js 302 B 0 B
./.nuxt/dist/client/pages/about.js 1.05 kB -1 B (0%)
./.nuxt/dist/client/pages/about.modern.js 1.06 kB -1 B (0%)
./.nuxt/dist/client/pages/audio/_id.js 6.42 kB +1 B (0%)
./.nuxt/dist/client/pages/audio/_id.modern.js 6.26 kB 0 B
./.nuxt/dist/client/pages/feedback.js 3.23 kB +1 B (0%)
./.nuxt/dist/client/pages/feedback.modern.js 3.2 kB 0 B
./.nuxt/dist/client/pages/image/_id.js 7.05 kB +1 B (0%)
./.nuxt/dist/client/pages/image/_id.modern.js 6.83 kB 0 B
./.nuxt/dist/client/pages/index.js 5.09 kB 0 B
./.nuxt/dist/client/pages/index.modern.js 4.97 kB -1 B (0%)
./.nuxt/dist/client/pages/meta-search.js 1.67 kB 0 B
./.nuxt/dist/client/pages/meta-search.modern.js 1.68 kB +3 B (0%)
./.nuxt/dist/client/pages/preferences.js 1.28 kB 0 B
./.nuxt/dist/client/pages/preferences.modern.js 1.27 kB 0 B
./.nuxt/dist/client/pages/search-help.js 1.55 kB 0 B
./.nuxt/dist/client/pages/search-help.modern.js 1.55 kB 0 B
./.nuxt/dist/client/pages/search.js 2.72 kB 0 B
./.nuxt/dist/client/pages/search.modern.js 2.56 kB -1 B (0%)
./.nuxt/dist/client/pages/search/audio.js 2.86 kB -2 B (0%)
./.nuxt/dist/client/pages/search/audio.modern.js 2.75 kB 0 B
./.nuxt/dist/client/pages/search/image.js 2.96 kB 0 B
./.nuxt/dist/client/pages/search/image.modern.js 2.83 kB 0 B
./.nuxt/dist/client/pages/search/index.js 815 B 0 B
./.nuxt/dist/client/pages/search/index.modern.js 731 B -1 B (0%)
./.nuxt/dist/client/pages/search/model-3d.js 242 B 0 B
./.nuxt/dist/client/pages/search/model-3d.modern.js 246 B 0 B
./.nuxt/dist/client/pages/search/search-page.types.js 266 B 0 B
./.nuxt/dist/client/pages/search/search-page.types.modern.js 271 B 0 B
./.nuxt/dist/client/pages/search/video.js 239 B 0 B
./.nuxt/dist/client/pages/search/video.modern.js 243 B -1 B (0%)
./.nuxt/dist/client/pages/sources.js 1.44 kB 0 B
./.nuxt/dist/client/pages/sources.modern.js 1.45 kB 0 B
./.nuxt/dist/client/vendors/app.js 47.8 kB 0 B
./.nuxt/dist/client/vendors/app.modern.js 47.1 kB 0 B

compressed-size-action

github-actions[bot] avatar Aug 11 '22 15:08 github-actions[bot]

Here's another cool feature added in 1.24:

https://playwright.dev/docs/release-notes#-component-tests-update

zackkrida avatar Aug 11 '22 21:08 zackkrida

I don't know what's happening, but the node_modules seems to be not available in the Docker container. This prevents the container from running Playwright and talkback together. I wonder if it's related to the multistage build.

obulat avatar Aug 12 '22 04:08 obulat

We don't use a multi-stage Dockerfile for playwright. We also don't explicitly copy node_modules into the container because we expect it to be mounted by docker-compose: https://github.com/WordPress/openverse-frontend/blob/c4a117a11ddda2d0085506c88284db43e2784223/docker-compose.playwright.yml#L10

Indeed, it does get properly mounted:

➜  openverse-frontend git:(update/vue) ✗ USER_ID=$(id -u) docker-compose -f docker-compose.playwright.yml run playwright bash
pwuser@72718588e85e:/app# ls
CODE_OF_CONDUCT.md     LICENSE                        ecosystem.config.js      nuxt.config.ts      tailwind.config.js     typings
CONTRIBUTING.md        README.md                      feat                     package.json        tailwind.safelist.txt
DEPLOYMENT.md          TESTING_GUIDELINES.md          jest.config.js           pnpm-lock.yaml      test
Dockerfile             bin                            node_modules             prettier.config.js  test-results
Dockerfile.playwright  docker-compose.playwright.yml  nuxt-template-overrides  src                 tsconfig.json
pwuser@72718588e85e:/app# ls node_modules/.bin
acorn                     dot-object              import-local-fixture  nanoid           run-s                      ts-node-transpile-only
ansi-html                 editorconfig            is-ci                 nopt             sane                       ts-script
ansi-to-html              errno                   is-docker             npm-run-all      semver                     tsc
atob                      escodegen               jest                  nuxt             sentry-cli                 tsserver
autoprefixer              esgenerate              jest-runtime          nuxt-cli         sha.js                     uglifyjs
babylon                   eslint                  jiti                  nuxt-storybook   sitemap                    uuid
browserslist              eslint-config-prettier  js-beautify           nuxt-telemetry   start-storybook            vue-demi-fix
build-storybook           esparse                 js-yaml               opencollective   storybook-server           vue-demi-switch
color-support             esvalidate              jscodeshift           opener           svgo                       vue-i18n-extract
css-beautify              flat                    jsesc                 parser           tailwind                   vue-tsc
css-blank-pseudo          glob-all                json5                 pidtree          tailwind-config-viewer     watch
css-has-pseudo            handlebars              lint-staged           playwright       tailwindcss                webpack
css-prefers-color-scheme  he                      loose-envify          prettier         tailwindcss-config-viewer  webpack-bundle-analyzer
cssesc                    html-beautify           lz-string             regexp-tree      terser                     which
default-browser-id        html-minifier           miller-rabin          regjsparser      ts-node                    x-default-browser
detect                    html-minifier-terser    mime                  replace-in-file  ts-node-cwd
detect-port               husky                   mkdirp                rimraf           ts-node-esm
detective                 image-size              mustache              run-p            ts-node-script

Even npm-run-all is there and has the correct permissions (owned by pwuser):

pwuser@72718588e85e:/app# ll ./node_modules/.bin | grep npm-run-all
-rwxr-xr-x  1 pwuser pwuser   556 Aug 24 17:08 npm-run-all*

I can even execute it just fine.

It turns out that Playwright at some point changed the execution context of the webserver command to be the same directory as the configuration file instead of the cwd from where Playwright was called.

Adding cwd: '/app', to the webServer configuration fixes the issue.

sarayourfriend avatar Aug 24 '22 17:08 sarayourfriend

It turns out that Playwright at some point changed the execution context of the webserver command to be the same directory as the configuration file instead of the cwd from where Playwright was called.

I found the PR that changed the context: https://github.com/microsoft/playwright/pull/13626 I tried simply adding the cwd: '/app', but it didn't work.

obulat avatar Aug 25 '22 12:08 obulat

It looks like the tests did run, there just appear to be a lot of visual regression failures. Could those come down to the change in browser version that accompanies a playwright upgrade? Maybe there was something else I missed in the logs?

sarayourfriend avatar Aug 25 '22 14:08 sarayourfriend

@sarayourfriend, it seems that all of the test failures here are due to some differences in the Arabic texts, or the way they are rendered. You can see some NUL symbols on this snapshot, for example:

image

obulat avatar Aug 25 '22 14:08 obulat

Interesting... I wonder if the fonts changed in the container's base image or something :thinking:

sarayourfriend avatar Aug 25 '22 14:08 sarayourfriend

I tried other versions, and all up to 1.25 work well. You can see version 1.24 pass the CI with all the same setting, and v1.25 has lots of visualization regression failures. One more thing I noticed in v1.25 Docker container logs is "Running playwright: config file not found" when running the tests. Although it must have found it to run the tests...

obulat avatar Aug 26 '22 05:08 obulat

I think we can keep the version updated to 1.24 in this PR, and invesigate newer versions later, as it's not such a high priority now.

obulat avatar Aug 26 '22 05:08 obulat