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

Update Playwright to use a custom test fixture with global mocks #2196

Merged
merged 19 commits into from
Jun 8, 2023

Conversation

zackkrida
Copy link
Member

@zackkrida zackkrida commented May 25, 2023

Creates a test fixture which overrides the base Playwright test fixture. This allows for easily setting global route mocks and other settings. Most crucially it removes the thousands of logs cluttering the output about the failed proxying of the analytics server.

This PR also makes our provider mocks global and adds a global mock for the analytics event endpoint, to prevent that from outputting hundreds of proxy-related error logs during the run of the test suite.

frontend/test/playwright/utils/test-fixture.ts is the main thing to review here. The rest is just implementations of the new fixture (switching the import from playwright to our custom test fixture).

This will be cleaned up and undrafted once #2194 is merged.

Testing instructions

  • Observe tests are still working and logs are no longer cluttered with analytics event warnings
  • Ensure provider APIs are still mocked correctly in all relevant tests
  • Try to import { test } from "@playwright/test" and you should be able to observe a lint error.

@github-actions github-actions bot added 🧱 stack: documentation Related to Sphinx documentation 🧱 stack: frontend Related to the Nuxt frontend labels May 25, 2023
@openverse-bot openverse-bot added the 🚦 status: awaiting triage Has not been triaged & therefore, not ready for work label May 25, 2023
@github-actions
Copy link

github-actions bot commented May 25, 2023

Size Change: 0 B

Total Size: 846 kB

ℹ️ View Unchanged
Filename Size
./frontend/.nuxt/dist/client/234.js 272 B
./frontend/.nuxt/dist/client/234.modern.js 277 B
./frontend/.nuxt/dist/client/235.js 1.85 kB
./frontend/.nuxt/dist/client/app.js 124 kB
./frontend/.nuxt/dist/client/app.modern.js 115 kB
./frontend/.nuxt/dist/client/commons/app.js 90.2 kB
./frontend/.nuxt/dist/client/commons/app.modern.js 80.7 kB
./frontend/.nuxt/dist/client/commons/components/v-search-grid/pages/search.js 5.18 kB
./frontend/.nuxt/dist/client/commons/components/v-search-grid/pages/search.modern.js 5.62 kB
./frontend/.nuxt/dist/client/components/loading-icon.js 764 B
./frontend/.nuxt/dist/client/components/loading-icon.modern.js 768 B
./frontend/.nuxt/dist/client/components/table-sort-icon.js 514 B
./frontend/.nuxt/dist/client/components/table-sort-icon.modern.js 519 B
./frontend/.nuxt/dist/client/components/v-all-results-grid.js 5.78 kB
./frontend/.nuxt/dist/client/components/v-all-results-grid.modern.js 5.64 kB
./frontend/.nuxt/dist/client/components/v-audio-cell.js 422 B
./frontend/.nuxt/dist/client/components/v-audio-cell.modern.js 425 B
./frontend/.nuxt/dist/client/components/v-audio-details.js 1.81 kB
./frontend/.nuxt/dist/client/components/v-audio-details.modern.js 1.77 kB
./frontend/.nuxt/dist/client/components/v-audio-track-skeleton.js 1.02 kB
./frontend/.nuxt/dist/client/components/v-audio-track-skeleton.modern.js 1.02 kB
./frontend/.nuxt/dist/client/components/v-audio-track.js 5.36 kB
./frontend/.nuxt/dist/client/components/v-audio-track.modern.js 5.3 kB
./frontend/.nuxt/dist/client/components/v-back-to-search-results-link.js 636 B
./frontend/.nuxt/dist/client/components/v-back-to-search-results-link.modern.js 644 B
./frontend/.nuxt/dist/client/components/v-bone.js 689 B
./frontend/.nuxt/dist/client/components/v-bone.modern.js 693 B
./frontend/.nuxt/dist/client/components/v-box-layout.js 1.28 kB
./frontend/.nuxt/dist/client/components/v-box-layout.modern.js 1.27 kB
./frontend/.nuxt/dist/client/components/v-content-link.js 1.06 kB
./frontend/.nuxt/dist/client/components/v-content-link.modern.js 1.06 kB
./frontend/.nuxt/dist/client/components/v-content-page.js 524 B
./frontend/.nuxt/dist/client/components/v-content-page.modern.js 526 B
./frontend/.nuxt/dist/client/components/v-content-report-button.js 492 B
./frontend/.nuxt/dist/client/components/v-content-report-button.modern.js 497 B
./frontend/.nuxt/dist/client/components/v-content-report-form.js 3.33 kB
./frontend/.nuxt/dist/client/components/v-content-report-form.modern.js 3.21 kB
./frontend/.nuxt/dist/client/components/v-content-report-popover.js 3.79 kB
./frontend/.nuxt/dist/client/components/v-content-report-popover.modern.js 3.67 kB
./frontend/.nuxt/dist/client/components/v-copy-button.js 3.99 kB
./frontend/.nuxt/dist/client/components/v-copy-button.modern.js 4 kB
./frontend/.nuxt/dist/client/components/v-copy-license.js 2.29 kB
./frontend/.nuxt/dist/client/components/v-copy-license.modern.js 2.26 kB
./frontend/.nuxt/dist/client/components/v-dmca-notice.js 793 B
./frontend/.nuxt/dist/client/components/v-dmca-notice.modern.js 799 B
./frontend/.nuxt/dist/client/components/v-error-image.js 2.61 kB
./frontend/.nuxt/dist/client/components/v-error-image.modern.js 2.58 kB
./frontend/.nuxt/dist/client/components/v-error-section.js 372 B
./frontend/.nuxt/dist/client/components/v-error-section.modern.js 376 B
./frontend/.nuxt/dist/client/components/v-external-search-form.js 1.89 kB
./frontend/.nuxt/dist/client/components/v-external-search-form.modern.js 1.87 kB
./frontend/.nuxt/dist/client/components/v-external-source-list.js 895 B
./frontend/.nuxt/dist/client/components/v-external-source-list.modern.js 897 B
./frontend/.nuxt/dist/client/components/v-full-layout.js 1.57 kB
./frontend/.nuxt/dist/client/components/v-full-layout.modern.js 1.57 kB
./frontend/.nuxt/dist/client/components/v-grid-skeleton.js 1.62 kB
./frontend/.nuxt/dist/client/components/v-grid-skeleton.modern.js 1.62 kB
./frontend/.nuxt/dist/client/components/v-home-gallery.js 4.92 kB
./frontend/.nuxt/dist/client/components/v-home-gallery.modern.js 4.9 kB
./frontend/.nuxt/dist/client/components/v-homepage-content.js 1.77 kB
./frontend/.nuxt/dist/client/components/v-homepage-content.modern.js 1.74 kB
./frontend/.nuxt/dist/client/components/v-image-carousel.js 4.73 kB
./frontend/.nuxt/dist/client/components/v-image-carousel.modern.js 4.7 kB
./frontend/.nuxt/dist/client/components/v-image-cell.js 1.66 kB
./frontend/.nuxt/dist/client/components/v-image-cell.modern.js 1.65 kB
./frontend/.nuxt/dist/client/components/v-image-details.js 1.43 kB
./frontend/.nuxt/dist/client/components/v-image-details.modern.js 1.41 kB
./frontend/.nuxt/dist/client/components/v-image-grid.js 3.9 kB
./frontend/.nuxt/dist/client/components/v-image-grid.modern.js 3.78 kB
./frontend/.nuxt/dist/client/components/v-license-tab-panel.js 644 B
./frontend/.nuxt/dist/client/components/v-license-tab-panel.modern.js 649 B
./frontend/.nuxt/dist/client/components/v-load-more.js 844 B
./frontend/.nuxt/dist/client/components/v-load-more.modern.js 742 B
./frontend/.nuxt/dist/client/components/v-media-license.js 930 B
./frontend/.nuxt/dist/client/components/v-media-license.modern.js 939 B
./frontend/.nuxt/dist/client/components/v-media-reuse.js 2.94 kB
./frontend/.nuxt/dist/client/components/v-media-reuse.modern.js 2.92 kB
./frontend/.nuxt/dist/client/components/v-media-tag.js 416 B
./frontend/.nuxt/dist/client/components/v-media-tag.modern.js 420 B
./frontend/.nuxt/dist/client/components/v-modal.js 1.01 kB
./frontend/.nuxt/dist/client/components/v-modal.modern.js 996 B
./frontend/.nuxt/dist/client/components/v-no-results.js 856 B
./frontend/.nuxt/dist/client/components/v-no-results.modern.js 858 B
./frontend/.nuxt/dist/client/components/v-radio.js 1 kB
./frontend/.nuxt/dist/client/components/v-radio.modern.js 1.01 kB
./frontend/.nuxt/dist/client/components/v-related-audio.js 1.29 kB
./frontend/.nuxt/dist/client/components/v-related-audio.modern.js 1.29 kB
./frontend/.nuxt/dist/client/components/v-related-images.js 1.1 kB
./frontend/.nuxt/dist/client/components/v-related-images.modern.js 1.1 kB
./frontend/.nuxt/dist/client/components/v-report-desc-form.js 977 B
./frontend/.nuxt/dist/client/components/v-report-desc-form.modern.js 980 B
./frontend/.nuxt/dist/client/components/v-row-layout.js 1.68 kB
./frontend/.nuxt/dist/client/components/v-row-layout.modern.js 1.68 kB
./frontend/.nuxt/dist/client/components/v-scroll-button.js 890 B
./frontend/.nuxt/dist/client/components/v-scroll-button.modern.js 892 B
./frontend/.nuxt/dist/client/components/v-search-grid.js 6.9 kB
./frontend/.nuxt/dist/client/components/v-search-grid.modern.js 6.25 kB
./frontend/.nuxt/dist/client/components/v-search-results-title.js 618 B
./frontend/.nuxt/dist/client/components/v-search-results-title.modern.js 621 B
./frontend/.nuxt/dist/client/components/v-server-timeout.js 300 B
./frontend/.nuxt/dist/client/components/v-server-timeout.modern.js 303 B
./frontend/.nuxt/dist/client/components/v-sketch-fab-viewer.js 1.02 kB
./frontend/.nuxt/dist/client/components/v-sketch-fab-viewer.modern.js 914 B
./frontend/.nuxt/dist/client/components/v-snackbar.js 1.16 kB
./frontend/.nuxt/dist/client/components/v-snackbar.modern.js 1.17 kB
./frontend/.nuxt/dist/client/components/v-sources-table.js 15.1 kB
./frontend/.nuxt/dist/client/components/v-sources-table.modern.js 15.2 kB
./frontend/.nuxt/dist/client/components/v-warning-suppressor.js 306 B
./frontend/.nuxt/dist/client/components/v-warning-suppressor.modern.js 311 B
./frontend/.nuxt/dist/client/pages/about.js 1.39 kB
./frontend/.nuxt/dist/client/pages/about.modern.js 1.4 kB
./frontend/.nuxt/dist/client/pages/audio/_id/index.js 6.31 kB
./frontend/.nuxt/dist/client/pages/audio/_id/index.modern.js 6.09 kB
./frontend/.nuxt/dist/client/pages/external-sources.js 1.55 kB
./frontend/.nuxt/dist/client/pages/external-sources.modern.js 1.56 kB
./frontend/.nuxt/dist/client/pages/feedback.js 1.34 kB
./frontend/.nuxt/dist/client/pages/feedback.modern.js 1.34 kB
./frontend/.nuxt/dist/client/pages/image/_id/index.js 7.3 kB
./frontend/.nuxt/dist/client/pages/image/_id/index.modern.js 7.05 kB
./frontend/.nuxt/dist/client/pages/image/_id/report.js 5.01 kB
./frontend/.nuxt/dist/client/pages/image/_id/report.modern.js 4.75 kB
./frontend/.nuxt/dist/client/pages/index.js 7.03 kB
./frontend/.nuxt/dist/client/pages/index.modern.js 6.96 kB
./frontend/.nuxt/dist/client/pages/preferences.js 1.3 kB
./frontend/.nuxt/dist/client/pages/preferences.modern.js 1.3 kB
./frontend/.nuxt/dist/client/pages/privacy.js 1.23 kB
./frontend/.nuxt/dist/client/pages/privacy.modern.js 1.24 kB
./frontend/.nuxt/dist/client/pages/search-help.js 1.59 kB
./frontend/.nuxt/dist/client/pages/search-help.modern.js 1.58 kB
./frontend/.nuxt/dist/client/pages/search.js 2.2 kB
./frontend/.nuxt/dist/client/pages/search.modern.js 2.04 kB
./frontend/.nuxt/dist/client/pages/search/audio.js 3.67 kB
./frontend/.nuxt/dist/client/pages/search/audio.modern.js 3.56 kB
./frontend/.nuxt/dist/client/pages/search/image.js 545 B
./frontend/.nuxt/dist/client/pages/search/image.modern.js 549 B
./frontend/.nuxt/dist/client/pages/search/index.js 442 B
./frontend/.nuxt/dist/client/pages/search/index.modern.js 448 B
./frontend/.nuxt/dist/client/pages/search/model-3d.js 243 B
./frontend/.nuxt/dist/client/pages/search/model-3d.modern.js 246 B
./frontend/.nuxt/dist/client/pages/search/search-page.types.js 266 B
./frontend/.nuxt/dist/client/pages/search/search-page.types.modern.js 271 B
./frontend/.nuxt/dist/client/pages/search/video.js 239 B
./frontend/.nuxt/dist/client/pages/search/video.modern.js 243 B
./frontend/.nuxt/dist/client/pages/sources.js 1.51 kB
./frontend/.nuxt/dist/client/pages/sources.modern.js 1.51 kB
./frontend/.nuxt/dist/client/runtime.js 2.71 kB
./frontend/.nuxt/dist/client/runtime.modern.js 2.72 kB
./frontend/.nuxt/dist/client/vendors/app.js 65.2 kB
./frontend/.nuxt/dist/client/vendors/app.modern.js 64.4 kB

compressed-size-action

@github-actions
Copy link

Full-stack documentation: https://docs.openverse.org/_preview/2196

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.

@zackkrida zackkrida changed the base branch from main to revert_pw_settings May 25, 2023 21:31
Base automatically changed from revert_pw_settings to main May 25, 2023 23:27
@zackkrida zackkrida added 🟨 priority: medium Not blocking but should be addressed soon 🤖 aspect: dx Concerns developers' experience with the codebase 🧰 goal: internal improvement Improvement that benefits maintainers, not users and removed 🚦 status: awaiting triage Has not been triaged & therefore, not ready for work labels Jun 2, 2023
@zackkrida zackkrida removed the 🧱 stack: documentation Related to Sphinx documentation label Jun 2, 2023
@zackkrida zackkrida marked this pull request as ready for review June 2, 2023 20:11
@zackkrida zackkrida requested a review from a team as a code owner June 2, 2023 20:11
@zackkrida zackkrida requested review from AetherUnbound and obulat June 2, 2023 20:11
@zackkrida
Copy link
Member Author

@obulat indeed, there is! I had already written it and forgot to push 🤦

.eslintrc.js Outdated Show resolved Hide resolved
Copy link
Collaborator

@AetherUnbound AetherUnbound left a comment

Choose a reason for hiding this comment

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

Hmm, the eslint rule doesn't appear to be working for me 😮 I made the following change:

diff --git a/frontend/test/storybook/visual-regression/v-select-field.spec.ts b/frontend/test/storybook/visual-regression/v-select-field.spec.ts
index c759c64af..b0265a671 100644
--- a/frontend/test/storybook/visual-regression/v-select-field.spec.ts
+++ b/frontend/test/storybook/visual-regression/v-select-field.spec.ts
@@ -1,6 +1,4 @@
-import { Page, expect } from "@playwright/test"
-
-import { test } from "~~/test/playwright/utils/test-fixture"
+import { Page, expect, test } from "@playwright/test"
 
 import { makeGotoWithArgs } from "~~/test/storybook/utils/args"

But just lint eslint is still passing. Is that expected?

@zackkrida
Copy link
Member Author

@AetherUnbound I will look into the eslint rule! It might be that you need to just install prior to testing, but I'll verify myself.

@AetherUnbound
Copy link
Collaborator

FWIW I ran just install and tried again - same thing, it passed without error! 😞

@sarayourfriend
Copy link
Collaborator

@zackkrida The ESLint rule you added is in the overrides block scoped exclusively to the unit tests (see the files setting). You'll need to move it to a different block that targets the playwright tests (frontend/test/{playwright,storybook}/**/*.spec.{ts,js} would do it, I think).

@zackkrida
Copy link
Member Author

@sarayourfriend, ah, thanks so much! That's definitely it

@zackkrida zackkrida requested a review from AetherUnbound June 7, 2023 00:43
@zackkrida
Copy link
Member Author

zackkrida commented Jun 7, 2023

@AetherUnbound thanks to Sara's excellent suggestion this is ready for review 👍 the rule should definitely work now.

Edit: And as a perfect test, there was one replacement of the import I missed, that CI caught with the now-working rule 😄 https://github.com/WordPress/openverse/actions/runs/5194737466/jobs/9366737945?pr=2196

@zackkrida zackkrida dismissed AetherUnbound’s stale review June 7, 2023 14:49

Changes made :)

Copy link
Collaborator

@sarayourfriend sarayourfriend left a comment

Choose a reason for hiding this comment

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

LGTM! Decided to review to cover Madison while she's at WCEU. Just one small thing and then will be good to go from me.

.eslintrc.js Outdated Show resolved Hide resolved
Co-authored-by: sarayourfriend <24264157+sarayourfriend@users.noreply.github.com>
@zackkrida zackkrida requested a review from sarayourfriend June 7, 2023 22:51
@sarayourfriend
Copy link
Collaborator

LGTM once the tests pass 👍

Copy link
Collaborator

@AetherUnbound AetherUnbound left a comment

Choose a reason for hiding this comment

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

Confirmed the lint rule now works (read: breaks correctly) for me! 😄

@zackkrida
Copy link
Member Author

Looks like there might be some test flake here 😢 I'll confirm on the next run and create the necessary critical issues.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🤖 aspect: dx Concerns developers' experience with the codebase 🧰 goal: internal improvement Improvement that benefits maintainers, not users 🟨 priority: medium Not blocking but should be addressed soon 🧱 stack: frontend Related to the Nuxt frontend
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

5 participants