-
Notifications
You must be signed in to change notification settings - Fork 12.9k
test: Reorg modal page objects #37871
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
Conversation
|
Looks like this PR is ready to merge! 🎉 |
|
WalkthroughReorganized e2e modal page-objects into a consolidated Changes
Sequence Diagram(s)(omitted) Estimated code review effort🎯 3 (Moderate) | ⏱️ ~35 minutes Possibly related PRs
Suggested reviewers
Poem
Pre-merge checks and finishing touches✅ Passed checks (5 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
📜 Recent review detailsConfiguration used: Organization UI Review profile: CHILL Plan: Pro Disabled knowledge base sources:
📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #37871 +/- ##
===========================================
- Coverage 70.66% 70.62% -0.04%
===========================================
Files 3143 3143
Lines 108694 108694
Branches 19572 19578 +6
===========================================
- Hits 76810 76768 -42
- Misses 29887 29924 +37
- Partials 1997 2002 +5
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
892eef5 to
5d7bc46
Compare
21648c8 to
a416643
Compare
a416643 to
8286db8
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No issues found across 46 files
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Nitpick comments (4)
apps/meteor/tests/e2e/page-objects/fragments/modals/confirm-delete-modal.ts (1)
10-12: Consider using a getter for consistency with other modal page objects.Other modal classes in this PR (e.g.,
EnableRoomEncryptionModal,SaveE2EEPasswordModal) use getters for button accessors (private get enableButton), while this uses a method. Using a consistent accessor style improves maintainability.🔎 Proposed fix
- private btnDelete() { + private get btnDelete() { return this.root.getByRole('button', { name: 'Delete' }); }apps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-transfer-chat-modal.ts (2)
14-16: Prefer semantic locator for the comment textarea.As per coding guidelines, prefer semantic locators over
locator(). Consider usinggetByRole('textbox')orgetByLabel()if the textarea has an accessible label.🔎 Proposed fix
get inputComment(): Locator { - return this.root.locator('textarea[name="comment"]'); + return this.root.getByRole('textbox', { name: 'Leave a comment' }); }
26-28: UsegetByRole()instead of CSS role selector string.The string
'role=button[name="Forward"]'is a Playwright CSS selector, but the preferred approach per coding guidelines is to use the semanticgetByRole()method.🔎 Proposed fix
get btnForward(): Locator { - return this.root.locator('role=button[name="Forward"]'); + return this.root.getByRole('button', { name: 'Forward' }); }apps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-confirm-remove-chat.ts (1)
6-8: Consider specifying the dialog name for more precise targeting.Using
page.getByRole('dialog')without anameoption is less specific than other modal classes in this PR. If multiple dialogs are present, this could match unintended elements. Consider adding an accessible name if available.🔎 Proposed fix (if the dialog has an accessible name)
constructor(page: Page) { - super(page.getByRole('dialog')); + super(page.getByRole('dialog', { name: 'Delete chat' })); }Please verify the actual dialog's accessible name in the application to ensure the selector is appropriately specific.
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Jira integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (46)
apps/meteor/client/views/omnichannel/modals/ForwardChatModal.tsxapps/meteor/tests/e2e/apps/apps-modal.spec.tsapps/meteor/tests/e2e/e2e-encryption/e2ee-encryption-decryption.spec.tsapps/meteor/tests/e2e/e2e-encryption/e2ee-passphrase-management.spec.tsapps/meteor/tests/e2e/e2e-encryption/setupE2EEPassword.tsapps/meteor/tests/e2e/feature-preview.spec.tsapps/meteor/tests/e2e/federation/page-objects/channel.tsapps/meteor/tests/e2e/federation/tests/ce-version/ce.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-contact-conflict-review.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-transfer-to-another-agents.spec.tsapps/meteor/tests/e2e/page-objects/account-security.tsapps/meteor/tests/e2e/page-objects/admin.tsapps/meteor/tests/e2e/page-objects/encrypted-room.tsapps/meteor/tests/e2e/page-objects/fragments/e2ee.tsapps/meteor/tests/e2e/page-objects/fragments/home-omnichannel-content.tsapps/meteor/tests/e2e/page-objects/fragments/index.tsapps/meteor/tests/e2e/page-objects/fragments/listbox.tsapps/meteor/tests/e2e/page-objects/fragments/modals/apps-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/confirm-delete-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/create-new-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/disable-room-encryption-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/edit-status-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/enable-room-encryption-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/enter-e2ee-password-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/enter-password-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/file-upload-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/index.tsapps/meteor/tests/e2e/page-objects/fragments/modals/modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-close-chat-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-confirm-remove-chat.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-contact-review-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-on-hold-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-transfer-chat-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/report-message-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/reset-e2ee-password-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/save-e2ee-password-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/upsell-modal.tsapps/meteor/tests/e2e/page-objects/fragments/navbar.tsapps/meteor/tests/e2e/page-objects/fragments/toolbar.tsapps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.tsapps/meteor/tests/e2e/page-objects/omnichannel-contact-review-modal.tsapps/meteor/tests/e2e/page-objects/omnichannel-info.tsapps/meteor/tests/e2e/page-objects/omnichannel-transfer-chat-modal.tsapps/meteor/tests/e2e/team-management.spec.tsapps/meteor/tests/e2e/voice-calls-ce.spec.ts
💤 Files with no reviewable changes (4)
- apps/meteor/tests/e2e/page-objects/omnichannel-contact-review-modal.ts
- apps/meteor/tests/e2e/page-objects/fragments/e2ee.ts
- apps/meteor/tests/e2e/page-objects/fragments/modals/apps-modal.ts
- apps/meteor/tests/e2e/page-objects/omnichannel-transfer-chat-modal.ts
🧰 Additional context used
📓 Path-based instructions (5)
**/*.{ts,tsx,js}
📄 CodeRabbit inference engine (.cursor/rules/playwright.mdc)
**/*.{ts,tsx,js}: Write concise, technical TypeScript/JavaScript with accurate typing in Playwright tests
Avoid code comments in the implementation
Files:
apps/meteor/tests/e2e/page-objects/fragments/modals/enter-password-modal.tsapps/meteor/tests/e2e/omnichannel/omnichannel-transfer-to-another-agents.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-transfer-chat-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-close-chat-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-confirm-remove-chat.tsapps/meteor/tests/e2e/page-objects/fragments/modals/save-e2ee-password-modal.tsapps/meteor/tests/e2e/federation/tests/ce-version/ce.spec.tsapps/meteor/client/views/omnichannel/modals/ForwardChatModal.tsxapps/meteor/tests/e2e/page-objects/fragments/modals/index.tsapps/meteor/tests/e2e/page-objects/fragments/modals/modal.tsapps/meteor/tests/e2e/federation/page-objects/channel.tsapps/meteor/tests/e2e/page-objects/fragments/modals/report-message-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/disable-room-encryption-modal.tsapps/meteor/tests/e2e/page-objects/fragments/navbar.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-contact-review-modal.tsapps/meteor/tests/e2e/omnichannel/omnichannel-contact-conflict-review.spec.tsapps/meteor/tests/e2e/page-objects/encrypted-room.tsapps/meteor/tests/e2e/page-objects/fragments/home-omnichannel-content.tsapps/meteor/tests/e2e/voice-calls-ce.spec.tsapps/meteor/tests/e2e/e2e-encryption/e2ee-passphrase-management.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/reset-e2ee-password-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/confirm-delete-modal.tsapps/meteor/tests/e2e/page-objects/fragments/toolbar.tsapps/meteor/tests/e2e/page-objects/fragments/modals/create-new-modal.tsapps/meteor/tests/e2e/e2e-encryption/e2ee-encryption-decryption.spec.tsapps/meteor/tests/e2e/apps/apps-modal.spec.tsapps/meteor/tests/e2e/page-objects/admin.tsapps/meteor/tests/e2e/page-objects/omnichannel-info.tsapps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/enable-room-encryption-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/enter-e2ee-password-modal.tsapps/meteor/tests/e2e/team-management.spec.tsapps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.tsapps/meteor/tests/e2e/page-objects/fragments/modals/edit-status-modal.tsapps/meteor/tests/e2e/page-objects/account-security.tsapps/meteor/tests/e2e/page-objects/fragments/index.tsapps/meteor/tests/e2e/e2e-encryption/setupE2EEPassword.tsapps/meteor/tests/e2e/feature-preview.spec.tsapps/meteor/tests/e2e/page-objects/fragments/listbox.ts
apps/meteor/tests/e2e/page-objects/**/*.ts
📄 CodeRabbit inference engine (.cursor/rules/playwright.mdc)
Utilize existing page objects pattern from
apps/meteor/tests/e2e/page-objects/
Files:
apps/meteor/tests/e2e/page-objects/fragments/modals/enter-password-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-transfer-chat-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-close-chat-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-confirm-remove-chat.tsapps/meteor/tests/e2e/page-objects/fragments/modals/save-e2ee-password-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/index.tsapps/meteor/tests/e2e/page-objects/fragments/modals/modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/report-message-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/disable-room-encryption-modal.tsapps/meteor/tests/e2e/page-objects/fragments/navbar.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-contact-review-modal.tsapps/meteor/tests/e2e/page-objects/encrypted-room.tsapps/meteor/tests/e2e/page-objects/fragments/home-omnichannel-content.tsapps/meteor/tests/e2e/page-objects/fragments/modals/reset-e2ee-password-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/confirm-delete-modal.tsapps/meteor/tests/e2e/page-objects/fragments/toolbar.tsapps/meteor/tests/e2e/page-objects/fragments/modals/create-new-modal.tsapps/meteor/tests/e2e/page-objects/admin.tsapps/meteor/tests/e2e/page-objects/omnichannel-info.tsapps/meteor/tests/e2e/page-objects/fragments/modals/enable-room-encryption-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/enter-e2ee-password-modal.tsapps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.tsapps/meteor/tests/e2e/page-objects/fragments/modals/edit-status-modal.tsapps/meteor/tests/e2e/page-objects/account-security.tsapps/meteor/tests/e2e/page-objects/fragments/index.tsapps/meteor/tests/e2e/page-objects/fragments/listbox.ts
apps/meteor/tests/e2e/**/*.{ts,spec.ts}
📄 CodeRabbit inference engine (.cursor/rules/playwright.mdc)
apps/meteor/tests/e2e/**/*.{ts,spec.ts}: Store commonly used locators in variables/constants for reuse
Follow Page Object Model pattern consistently in Playwright tests
Files:
apps/meteor/tests/e2e/page-objects/fragments/modals/enter-password-modal.tsapps/meteor/tests/e2e/omnichannel/omnichannel-transfer-to-another-agents.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-transfer-chat-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-close-chat-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-confirm-remove-chat.tsapps/meteor/tests/e2e/page-objects/fragments/modals/save-e2ee-password-modal.tsapps/meteor/tests/e2e/federation/tests/ce-version/ce.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/index.tsapps/meteor/tests/e2e/page-objects/fragments/modals/modal.tsapps/meteor/tests/e2e/federation/page-objects/channel.tsapps/meteor/tests/e2e/page-objects/fragments/modals/report-message-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/disable-room-encryption-modal.tsapps/meteor/tests/e2e/page-objects/fragments/navbar.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-contact-review-modal.tsapps/meteor/tests/e2e/omnichannel/omnichannel-contact-conflict-review.spec.tsapps/meteor/tests/e2e/page-objects/encrypted-room.tsapps/meteor/tests/e2e/page-objects/fragments/home-omnichannel-content.tsapps/meteor/tests/e2e/voice-calls-ce.spec.tsapps/meteor/tests/e2e/e2e-encryption/e2ee-passphrase-management.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/reset-e2ee-password-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/confirm-delete-modal.tsapps/meteor/tests/e2e/page-objects/fragments/toolbar.tsapps/meteor/tests/e2e/page-objects/fragments/modals/create-new-modal.tsapps/meteor/tests/e2e/e2e-encryption/e2ee-encryption-decryption.spec.tsapps/meteor/tests/e2e/apps/apps-modal.spec.tsapps/meteor/tests/e2e/page-objects/admin.tsapps/meteor/tests/e2e/page-objects/omnichannel-info.tsapps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/enable-room-encryption-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/enter-e2ee-password-modal.tsapps/meteor/tests/e2e/team-management.spec.tsapps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.tsapps/meteor/tests/e2e/page-objects/fragments/modals/edit-status-modal.tsapps/meteor/tests/e2e/page-objects/account-security.tsapps/meteor/tests/e2e/page-objects/fragments/index.tsapps/meteor/tests/e2e/e2e-encryption/setupE2EEPassword.tsapps/meteor/tests/e2e/feature-preview.spec.tsapps/meteor/tests/e2e/page-objects/fragments/listbox.ts
**/*.spec.ts
📄 CodeRabbit inference engine (.cursor/rules/playwright.mdc)
**/*.spec.ts: Use descriptive test names that clearly communicate expected behavior in Playwright tests
Use.spec.tsextension for test files (e.g.,login.spec.ts)
Files:
apps/meteor/tests/e2e/omnichannel/omnichannel-transfer-to-another-agents.spec.tsapps/meteor/tests/e2e/federation/tests/ce-version/ce.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-contact-conflict-review.spec.tsapps/meteor/tests/e2e/voice-calls-ce.spec.tsapps/meteor/tests/e2e/e2e-encryption/e2ee-passphrase-management.spec.tsapps/meteor/tests/e2e/e2e-encryption/e2ee-encryption-decryption.spec.tsapps/meteor/tests/e2e/apps/apps-modal.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.tsapps/meteor/tests/e2e/team-management.spec.tsapps/meteor/tests/e2e/feature-preview.spec.ts
apps/meteor/tests/e2e/**/*.spec.ts
📄 CodeRabbit inference engine (.cursor/rules/playwright.mdc)
apps/meteor/tests/e2e/**/*.spec.ts: All test files must be created inapps/meteor/tests/e2e/directory
Avoid usingpage.locator()in Playwright tests - always prefer semantic locators such aspage.getByRole(),page.getByLabel(),page.getByText(), orpage.getByTitle()
Usetest.beforeAll()andtest.afterAll()for setup/teardown in Playwright tests
Usetest.step()for complex test scenarios to improve organization in Playwright tests
Group related tests in the same file
Utilize Playwright fixtures (test,page,expect) for consistency in test files
Prefer web-first assertions (toBeVisible,toHaveText, etc.) in Playwright tests
Useexpectmatchers for assertions (toEqual,toContain,toBeTruthy,toHaveLength, etc.) instead ofassertstatements in Playwright tests
Usepage.waitFor()with specific conditions instead of hardcoded timeouts in Playwright tests
Implement proper wait strategies for dynamic content in Playwright tests
Maintain test isolation between test cases in Playwright tests
Ensure clean state for each test execution in Playwright tests
Ensure tests run reliably in parallel without shared state conflicts
Files:
apps/meteor/tests/e2e/omnichannel/omnichannel-transfer-to-another-agents.spec.tsapps/meteor/tests/e2e/federation/tests/ce-version/ce.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-contact-conflict-review.spec.tsapps/meteor/tests/e2e/voice-calls-ce.spec.tsapps/meteor/tests/e2e/e2e-encryption/e2ee-passphrase-management.spec.tsapps/meteor/tests/e2e/e2e-encryption/e2ee-encryption-decryption.spec.tsapps/meteor/tests/e2e/apps/apps-modal.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.tsapps/meteor/tests/e2e/team-management.spec.tsapps/meteor/tests/e2e/feature-preview.spec.ts
🧠 Learnings (24)
📓 Common learnings
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/page-objects/**/*.ts : Utilize existing page objects pattern from `apps/meteor/tests/e2e/page-objects/`
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.{ts,spec.ts} : Follow Page Object Model pattern consistently in Playwright tests
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.{ts,spec.ts} : Store commonly used locators in variables/constants for reuse
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.spec.ts : Utilize Playwright fixtures (`test`, `page`, `expect`) for consistency in test files
Learnt from: gabriellsh
Repo: RocketChat/Rocket.Chat PR: 37834
File: apps/meteor/tests/e2e/page-objects/fragments/admin-flextab-emoji.ts:12-22
Timestamp: 2025-12-16T17:29:45.163Z
Learning: In page object files under `apps/meteor/tests/e2e/page-objects/`, always import `expect` from `../../utils/test` (Playwright's async expect), not from Jest. Jest's `expect` has a synchronous signature and will cause TypeScript errors when used with web-first assertions like `toBeVisible()`.
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/page-objects/**/*.ts : Utilize existing page objects pattern from `apps/meteor/tests/e2e/page-objects/`
Applied to files:
apps/meteor/tests/e2e/page-objects/fragments/modals/enter-password-modal.tsapps/meteor/tests/e2e/omnichannel/omnichannel-transfer-to-another-agents.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-transfer-chat-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-close-chat-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-confirm-remove-chat.tsapps/meteor/tests/e2e/page-objects/fragments/modals/save-e2ee-password-modal.tsapps/meteor/tests/e2e/federation/tests/ce-version/ce.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/index.tsapps/meteor/tests/e2e/page-objects/fragments/modals/modal.tsapps/meteor/tests/e2e/federation/page-objects/channel.tsapps/meteor/tests/e2e/page-objects/fragments/modals/report-message-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/disable-room-encryption-modal.tsapps/meteor/tests/e2e/page-objects/fragments/navbar.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-contact-review-modal.tsapps/meteor/tests/e2e/omnichannel/omnichannel-contact-conflict-review.spec.tsapps/meteor/tests/e2e/page-objects/encrypted-room.tsapps/meteor/tests/e2e/page-objects/fragments/home-omnichannel-content.tsapps/meteor/tests/e2e/voice-calls-ce.spec.tsapps/meteor/tests/e2e/e2e-encryption/e2ee-passphrase-management.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/reset-e2ee-password-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/confirm-delete-modal.tsapps/meteor/tests/e2e/page-objects/fragments/toolbar.tsapps/meteor/tests/e2e/page-objects/fragments/modals/create-new-modal.tsapps/meteor/tests/e2e/e2e-encryption/e2ee-encryption-decryption.spec.tsapps/meteor/tests/e2e/apps/apps-modal.spec.tsapps/meteor/tests/e2e/page-objects/admin.tsapps/meteor/tests/e2e/page-objects/omnichannel-info.tsapps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/enable-room-encryption-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/enter-e2ee-password-modal.tsapps/meteor/tests/e2e/team-management.spec.tsapps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.tsapps/meteor/tests/e2e/page-objects/fragments/modals/edit-status-modal.tsapps/meteor/tests/e2e/page-objects/account-security.tsapps/meteor/tests/e2e/page-objects/fragments/index.tsapps/meteor/tests/e2e/e2e-encryption/setupE2EEPassword.tsapps/meteor/tests/e2e/feature-preview.spec.tsapps/meteor/tests/e2e/page-objects/fragments/listbox.ts
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.{ts,spec.ts} : Follow Page Object Model pattern consistently in Playwright tests
Applied to files:
apps/meteor/tests/e2e/page-objects/fragments/modals/enter-password-modal.tsapps/meteor/tests/e2e/omnichannel/omnichannel-transfer-to-another-agents.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-transfer-chat-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-close-chat-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-confirm-remove-chat.tsapps/meteor/tests/e2e/page-objects/fragments/modals/save-e2ee-password-modal.tsapps/meteor/tests/e2e/federation/tests/ce-version/ce.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/index.tsapps/meteor/tests/e2e/page-objects/fragments/modals/modal.tsapps/meteor/tests/e2e/federation/page-objects/channel.tsapps/meteor/tests/e2e/page-objects/fragments/modals/report-message-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/disable-room-encryption-modal.tsapps/meteor/tests/e2e/page-objects/fragments/navbar.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-contact-review-modal.tsapps/meteor/tests/e2e/omnichannel/omnichannel-contact-conflict-review.spec.tsapps/meteor/tests/e2e/page-objects/encrypted-room.tsapps/meteor/tests/e2e/page-objects/fragments/home-omnichannel-content.tsapps/meteor/tests/e2e/voice-calls-ce.spec.tsapps/meteor/tests/e2e/e2e-encryption/e2ee-passphrase-management.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/reset-e2ee-password-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/confirm-delete-modal.tsapps/meteor/tests/e2e/page-objects/fragments/toolbar.tsapps/meteor/tests/e2e/page-objects/fragments/modals/create-new-modal.tsapps/meteor/tests/e2e/e2e-encryption/e2ee-encryption-decryption.spec.tsapps/meteor/tests/e2e/apps/apps-modal.spec.tsapps/meteor/tests/e2e/page-objects/admin.tsapps/meteor/tests/e2e/page-objects/omnichannel-info.tsapps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/enable-room-encryption-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/enter-e2ee-password-modal.tsapps/meteor/tests/e2e/team-management.spec.tsapps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.tsapps/meteor/tests/e2e/page-objects/fragments/modals/edit-status-modal.tsapps/meteor/tests/e2e/page-objects/account-security.tsapps/meteor/tests/e2e/page-objects/fragments/index.tsapps/meteor/tests/e2e/e2e-encryption/setupE2EEPassword.tsapps/meteor/tests/e2e/feature-preview.spec.tsapps/meteor/tests/e2e/page-objects/fragments/listbox.ts
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.spec.ts : Ensure tests run reliably in parallel without shared state conflicts
Applied to files:
apps/meteor/tests/e2e/page-objects/fragments/modals/enter-password-modal.tsapps/meteor/tests/e2e/omnichannel/omnichannel-transfer-to-another-agents.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-close-chat-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/save-e2ee-password-modal.tsapps/meteor/tests/e2e/federation/tests/ce-version/ce.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/index.tsapps/meteor/tests/e2e/page-objects/fragments/modals/modal.tsapps/meteor/tests/e2e/federation/page-objects/channel.tsapps/meteor/tests/e2e/page-objects/fragments/modals/report-message-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/disable-room-encryption-modal.tsapps/meteor/tests/e2e/page-objects/fragments/navbar.tsapps/meteor/tests/e2e/omnichannel/omnichannel-contact-conflict-review.spec.tsapps/meteor/tests/e2e/page-objects/encrypted-room.tsapps/meteor/tests/e2e/voice-calls-ce.spec.tsapps/meteor/tests/e2e/e2e-encryption/e2ee-passphrase-management.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/reset-e2ee-password-modal.tsapps/meteor/tests/e2e/page-objects/fragments/toolbar.tsapps/meteor/tests/e2e/e2e-encryption/e2ee-encryption-decryption.spec.tsapps/meteor/tests/e2e/apps/apps-modal.spec.tsapps/meteor/tests/e2e/page-objects/admin.tsapps/meteor/tests/e2e/page-objects/omnichannel-info.tsapps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.tsapps/meteor/tests/e2e/team-management.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/edit-status-modal.tsapps/meteor/tests/e2e/page-objects/account-security.tsapps/meteor/tests/e2e/page-objects/fragments/index.tsapps/meteor/tests/e2e/e2e-encryption/setupE2EEPassword.tsapps/meteor/tests/e2e/feature-preview.spec.ts
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.spec.ts : Use `expect` matchers for assertions (`toEqual`, `toContain`, `toBeTruthy`, `toHaveLength`, etc.) instead of `assert` statements in Playwright tests
Applied to files:
apps/meteor/tests/e2e/page-objects/fragments/modals/enter-password-modal.tsapps/meteor/tests/e2e/omnichannel/omnichannel-transfer-to-another-agents.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/save-e2ee-password-modal.tsapps/meteor/tests/e2e/federation/tests/ce-version/ce.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/report-message-modal.tsapps/meteor/tests/e2e/page-objects/fragments/navbar.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-contact-review-modal.tsapps/meteor/tests/e2e/omnichannel/omnichannel-contact-conflict-review.spec.tsapps/meteor/tests/e2e/page-objects/encrypted-room.tsapps/meteor/tests/e2e/voice-calls-ce.spec.tsapps/meteor/tests/e2e/e2e-encryption/e2ee-passphrase-management.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/reset-e2ee-password-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/confirm-delete-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/create-new-modal.tsapps/meteor/tests/e2e/e2e-encryption/e2ee-encryption-decryption.spec.tsapps/meteor/tests/e2e/apps/apps-modal.spec.tsapps/meteor/tests/e2e/page-objects/admin.tsapps/meteor/tests/e2e/page-objects/fragments/modals/enable-room-encryption-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/enter-e2ee-password-modal.tsapps/meteor/tests/e2e/team-management.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/edit-status-modal.tsapps/meteor/tests/e2e/page-objects/account-security.tsapps/meteor/tests/e2e/page-objects/fragments/index.tsapps/meteor/tests/e2e/feature-preview.spec.tsapps/meteor/tests/e2e/page-objects/fragments/listbox.ts
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.spec.ts : Utilize Playwright fixtures (`test`, `page`, `expect`) for consistency in test files
Applied to files:
apps/meteor/tests/e2e/page-objects/fragments/modals/enter-password-modal.tsapps/meteor/tests/e2e/omnichannel/omnichannel-transfer-to-another-agents.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-transfer-chat-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-close-chat-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-confirm-remove-chat.tsapps/meteor/tests/e2e/page-objects/fragments/modals/save-e2ee-password-modal.tsapps/meteor/tests/e2e/federation/tests/ce-version/ce.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/index.tsapps/meteor/tests/e2e/page-objects/fragments/modals/modal.tsapps/meteor/tests/e2e/federation/page-objects/channel.tsapps/meteor/tests/e2e/page-objects/fragments/modals/report-message-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/disable-room-encryption-modal.tsapps/meteor/tests/e2e/page-objects/fragments/navbar.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-contact-review-modal.tsapps/meteor/tests/e2e/omnichannel/omnichannel-contact-conflict-review.spec.tsapps/meteor/tests/e2e/page-objects/encrypted-room.tsapps/meteor/tests/e2e/page-objects/fragments/home-omnichannel-content.tsapps/meteor/tests/e2e/voice-calls-ce.spec.tsapps/meteor/tests/e2e/e2e-encryption/e2ee-passphrase-management.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/reset-e2ee-password-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/confirm-delete-modal.tsapps/meteor/tests/e2e/page-objects/fragments/toolbar.tsapps/meteor/tests/e2e/page-objects/fragments/modals/create-new-modal.tsapps/meteor/tests/e2e/e2e-encryption/e2ee-encryption-decryption.spec.tsapps/meteor/tests/e2e/apps/apps-modal.spec.tsapps/meteor/tests/e2e/page-objects/admin.tsapps/meteor/tests/e2e/page-objects/omnichannel-info.tsapps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/enable-room-encryption-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/enter-e2ee-password-modal.tsapps/meteor/tests/e2e/team-management.spec.tsapps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.tsapps/meteor/tests/e2e/page-objects/fragments/modals/edit-status-modal.tsapps/meteor/tests/e2e/page-objects/account-security.tsapps/meteor/tests/e2e/page-objects/fragments/index.tsapps/meteor/tests/e2e/e2e-encryption/setupE2EEPassword.tsapps/meteor/tests/e2e/feature-preview.spec.tsapps/meteor/tests/e2e/page-objects/fragments/listbox.ts
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.{ts,spec.ts} : Store commonly used locators in variables/constants for reuse
Applied to files:
apps/meteor/tests/e2e/page-objects/fragments/modals/enter-password-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-transfer-chat-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-close-chat-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-confirm-remove-chat.tsapps/meteor/tests/e2e/page-objects/fragments/modals/save-e2ee-password-modal.tsapps/meteor/tests/e2e/federation/tests/ce-version/ce.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/index.tsapps/meteor/tests/e2e/page-objects/fragments/modals/modal.tsapps/meteor/tests/e2e/federation/page-objects/channel.tsapps/meteor/tests/e2e/page-objects/fragments/modals/report-message-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/disable-room-encryption-modal.tsapps/meteor/tests/e2e/page-objects/fragments/navbar.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-contact-review-modal.tsapps/meteor/tests/e2e/page-objects/encrypted-room.tsapps/meteor/tests/e2e/page-objects/fragments/home-omnichannel-content.tsapps/meteor/tests/e2e/voice-calls-ce.spec.tsapps/meteor/tests/e2e/e2e-encryption/e2ee-passphrase-management.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/reset-e2ee-password-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/confirm-delete-modal.tsapps/meteor/tests/e2e/page-objects/fragments/toolbar.tsapps/meteor/tests/e2e/page-objects/fragments/modals/create-new-modal.tsapps/meteor/tests/e2e/e2e-encryption/e2ee-encryption-decryption.spec.tsapps/meteor/tests/e2e/apps/apps-modal.spec.tsapps/meteor/tests/e2e/page-objects/admin.tsapps/meteor/tests/e2e/page-objects/omnichannel-info.tsapps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/enter-e2ee-password-modal.tsapps/meteor/tests/e2e/team-management.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/edit-status-modal.tsapps/meteor/tests/e2e/page-objects/account-security.tsapps/meteor/tests/e2e/page-objects/fragments/index.tsapps/meteor/tests/e2e/e2e-encryption/setupE2EEPassword.tsapps/meteor/tests/e2e/feature-preview.spec.tsapps/meteor/tests/e2e/page-objects/fragments/listbox.ts
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.spec.ts : Prefer web-first assertions (`toBeVisible`, `toHaveText`, etc.) in Playwright tests
Applied to files:
apps/meteor/tests/e2e/page-objects/fragments/modals/enter-password-modal.tsapps/meteor/tests/e2e/omnichannel/omnichannel-transfer-to-another-agents.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-close-chat-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/save-e2ee-password-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/report-message-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/disable-room-encryption-modal.tsapps/meteor/tests/e2e/page-objects/fragments/navbar.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-contact-review-modal.tsapps/meteor/tests/e2e/voice-calls-ce.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/reset-e2ee-password-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/confirm-delete-modal.tsapps/meteor/tests/e2e/page-objects/fragments/toolbar.tsapps/meteor/tests/e2e/page-objects/fragments/modals/create-new-modal.tsapps/meteor/tests/e2e/apps/apps-modal.spec.tsapps/meteor/tests/e2e/page-objects/admin.tsapps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/enable-room-encryption-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/enter-e2ee-password-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/edit-status-modal.tsapps/meteor/tests/e2e/page-objects/account-security.tsapps/meteor/tests/e2e/page-objects/fragments/index.tsapps/meteor/tests/e2e/page-objects/fragments/listbox.ts
📚 Learning: 2025-12-16T17:29:40.430Z
Learnt from: gabriellsh
Repo: RocketChat/Rocket.Chat PR: 37834
File: apps/meteor/tests/e2e/page-objects/fragments/admin-flextab-emoji.ts:12-22
Timestamp: 2025-12-16T17:29:40.430Z
Learning: In all page-object files under apps/meteor/tests/e2e/page-objects/, import expect from ../../utils/test (Playwright's async expect) instead of from Jest. Jest's expect is synchronous and incompatible with web-first assertions like toBeVisible, which can cause TypeScript errors.
Applied to files:
apps/meteor/tests/e2e/page-objects/fragments/modals/enter-password-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-transfer-chat-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-close-chat-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-confirm-remove-chat.tsapps/meteor/tests/e2e/page-objects/fragments/modals/save-e2ee-password-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/index.tsapps/meteor/tests/e2e/page-objects/fragments/modals/modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/report-message-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/disable-room-encryption-modal.tsapps/meteor/tests/e2e/page-objects/fragments/navbar.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-contact-review-modal.tsapps/meteor/tests/e2e/page-objects/encrypted-room.tsapps/meteor/tests/e2e/page-objects/fragments/home-omnichannel-content.tsapps/meteor/tests/e2e/page-objects/fragments/modals/reset-e2ee-password-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/confirm-delete-modal.tsapps/meteor/tests/e2e/page-objects/fragments/toolbar.tsapps/meteor/tests/e2e/page-objects/fragments/modals/create-new-modal.tsapps/meteor/tests/e2e/page-objects/admin.tsapps/meteor/tests/e2e/page-objects/omnichannel-info.tsapps/meteor/tests/e2e/page-objects/fragments/modals/enable-room-encryption-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/enter-e2ee-password-modal.tsapps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.tsapps/meteor/tests/e2e/page-objects/fragments/modals/edit-status-modal.tsapps/meteor/tests/e2e/page-objects/account-security.tsapps/meteor/tests/e2e/page-objects/fragments/index.tsapps/meteor/tests/e2e/page-objects/fragments/listbox.ts
📚 Learning: 2025-11-19T18:20:37.116Z
Learnt from: gabriellsh
Repo: RocketChat/Rocket.Chat PR: 37419
File: apps/meteor/server/services/media-call/service.ts:141-141
Timestamp: 2025-11-19T18:20:37.116Z
Learning: In apps/meteor/server/services/media-call/service.ts, the sendHistoryMessage method should use call.caller.id or call.createdBy?.id as the message author, not call.transferredBy?.id. Even for transferred calls, the message should appear in the DM between the two users who are calling each other, not sent by the person who transferred the call.
Applied to files:
apps/meteor/tests/e2e/omnichannel/omnichannel-transfer-to-another-agents.spec.ts
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.spec.ts : Use `test.step()` for complex test scenarios to improve organization in Playwright tests
Applied to files:
apps/meteor/tests/e2e/omnichannel/omnichannel-transfer-to-another-agents.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/save-e2ee-password-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-contact-review-modal.tsapps/meteor/tests/e2e/omnichannel/omnichannel-contact-conflict-review.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/enter-e2ee-password-modal.tsapps/meteor/tests/e2e/feature-preview.spec.ts
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.spec.ts : Avoid using `page.locator()` in Playwright tests - always prefer semantic locators such as `page.getByRole()`, `page.getByLabel()`, `page.getByText()`, or `page.getByTitle()`
Applied to files:
apps/meteor/tests/e2e/omnichannel/omnichannel-transfer-to-another-agents.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-transfer-chat-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-confirm-remove-chat.tsapps/meteor/tests/e2e/page-objects/fragments/modals/modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/report-message-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/disable-room-encryption-modal.tsapps/meteor/tests/e2e/page-objects/fragments/navbar.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-contact-review-modal.tsapps/meteor/tests/e2e/omnichannel/omnichannel-contact-conflict-review.spec.tsapps/meteor/tests/e2e/page-objects/fragments/home-omnichannel-content.tsapps/meteor/tests/e2e/page-objects/fragments/modals/confirm-delete-modal.tsapps/meteor/tests/e2e/page-objects/fragments/toolbar.tsapps/meteor/tests/e2e/page-objects/fragments/modals/create-new-modal.tsapps/meteor/tests/e2e/page-objects/admin.tsapps/meteor/tests/e2e/page-objects/omnichannel-info.tsapps/meteor/tests/e2e/page-objects/fragments/modals/enable-room-encryption-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/enter-e2ee-password-modal.tsapps/meteor/tests/e2e/page-objects/account-security.tsapps/meteor/tests/e2e/page-objects/fragments/listbox.ts
📚 Learning: 2025-10-06T20:32:23.658Z
Learnt from: d-gubert
Repo: RocketChat/Rocket.Chat PR: 37152
File: packages/apps-engine/tests/test-data/utilities.ts:557-573
Timestamp: 2025-10-06T20:32:23.658Z
Learning: In packages/apps-engine/tests/test-data/utilities.ts, the field name `isSubscripbedViaBundle` in the `IMarketplaceSubscriptionInfo` type should not be flagged as a typo, as it may match the upstream API's field name.
Applied to files:
apps/meteor/tests/e2e/omnichannel/omnichannel-transfer-to-another-agents.spec.ts
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.spec.ts : Group related tests in the same file
Applied to files:
apps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-transfer-chat-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-close-chat-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/save-e2ee-password-modal.tsapps/meteor/tests/e2e/federation/tests/ce-version/ce.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/index.tsapps/meteor/tests/e2e/page-objects/fragments/modals/modal.tsapps/meteor/tests/e2e/federation/page-objects/channel.tsapps/meteor/tests/e2e/page-objects/fragments/modals/report-message-modal.tsapps/meteor/tests/e2e/page-objects/fragments/navbar.tsapps/meteor/tests/e2e/page-objects/encrypted-room.tsapps/meteor/tests/e2e/voice-calls-ce.spec.tsapps/meteor/tests/e2e/e2e-encryption/e2ee-passphrase-management.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/reset-e2ee-password-modal.tsapps/meteor/tests/e2e/page-objects/fragments/toolbar.tsapps/meteor/tests/e2e/page-objects/fragments/modals/create-new-modal.tsapps/meteor/tests/e2e/e2e-encryption/e2ee-encryption-decryption.spec.tsapps/meteor/tests/e2e/apps/apps-modal.spec.tsapps/meteor/tests/e2e/page-objects/admin.tsapps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/enter-e2ee-password-modal.tsapps/meteor/tests/e2e/team-management.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/edit-status-modal.tsapps/meteor/tests/e2e/page-objects/account-security.tsapps/meteor/tests/e2e/page-objects/fragments/index.tsapps/meteor/tests/e2e/e2e-encryption/setupE2EEPassword.tsapps/meteor/tests/e2e/feature-preview.spec.ts
📚 Learning: 2025-09-23T19:22:59.217Z
Learnt from: dougfabris
Repo: RocketChat/Rocket.Chat PR: 36987
File: apps/meteor/tests/e2e/page-objects/fragments/room-toolbar.ts:10-20
Timestamp: 2025-09-23T19:22:59.217Z
Learning: In Playwright e2e tests, prefer stable selectors like data-qa-id attributes over localized text in getByRole() or getByText() calls to prevent test failures when UI language changes. Test translations separately by validating actual text content after ensuring UI interactions work with stable selectors.
Applied to files:
apps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-transfer-chat-modal.ts
📚 Learning: 2025-12-10T21:00:54.909Z
Learnt from: KevLehman
Repo: RocketChat/Rocket.Chat PR: 37091
File: ee/packages/abac/jest.config.ts:4-7
Timestamp: 2025-12-10T21:00:54.909Z
Learning: Rocket.Chat monorepo: Jest testMatch pattern '<rootDir>/src/**/*.spec.(ts|js|mjs)' is valid in this repo and used across multiple packages (e.g., packages/tools, ee/packages/omnichannel-services). Do not flag it as invalid in future reviews.
Applied to files:
apps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-close-chat-modal.tsapps/meteor/tests/e2e/federation/tests/ce-version/ce.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.tsapps/meteor/tests/e2e/team-management.spec.tsapps/meteor/tests/e2e/page-objects/fragments/index.ts
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.spec.ts : All test files must be created in `apps/meteor/tests/e2e/` directory
Applied to files:
apps/meteor/tests/e2e/page-objects/fragments/modals/save-e2ee-password-modal.tsapps/meteor/tests/e2e/federation/tests/ce-version/ce.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/index.tsapps/meteor/tests/e2e/page-objects/fragments/modals/modal.tsapps/meteor/tests/e2e/federation/page-objects/channel.tsapps/meteor/tests/e2e/page-objects/fragments/modals/report-message-modal.tsapps/meteor/tests/e2e/page-objects/encrypted-room.tsapps/meteor/tests/e2e/voice-calls-ce.spec.tsapps/meteor/tests/e2e/e2e-encryption/e2ee-passphrase-management.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/reset-e2ee-password-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/create-new-modal.tsapps/meteor/tests/e2e/e2e-encryption/e2ee-encryption-decryption.spec.tsapps/meteor/tests/e2e/apps/apps-modal.spec.tsapps/meteor/tests/e2e/page-objects/admin.tsapps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.tsapps/meteor/tests/e2e/team-management.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/edit-status-modal.tsapps/meteor/tests/e2e/e2e-encryption/setupE2EEPassword.tsapps/meteor/tests/e2e/feature-preview.spec.ts
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.spec.ts : Maintain test isolation between test cases in Playwright tests
Applied to files:
apps/meteor/tests/e2e/federation/tests/ce-version/ce.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/index.tsapps/meteor/tests/e2e/page-objects/fragments/modals/report-message-modal.tsapps/meteor/tests/e2e/omnichannel/omnichannel-contact-conflict-review.spec.tsapps/meteor/tests/e2e/page-objects/encrypted-room.tsapps/meteor/tests/e2e/voice-calls-ce.spec.tsapps/meteor/tests/e2e/e2e-encryption/e2ee-passphrase-management.spec.tsapps/meteor/tests/e2e/e2e-encryption/e2ee-encryption-decryption.spec.tsapps/meteor/tests/e2e/apps/apps-modal.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/enable-room-encryption-modal.tsapps/meteor/tests/e2e/team-management.spec.tsapps/meteor/tests/e2e/page-objects/account-security.tsapps/meteor/tests/e2e/e2e-encryption/setupE2EEPassword.ts
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.spec.ts : Ensure clean state for each test execution in Playwright tests
Applied to files:
apps/meteor/tests/e2e/page-objects/fragments/modals/modal.tsapps/meteor/tests/e2e/omnichannel/omnichannel-contact-conflict-review.spec.tsapps/meteor/tests/e2e/voice-calls-ce.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/reset-e2ee-password-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/confirm-delete-modal.tsapps/meteor/tests/e2e/e2e-encryption/e2ee-encryption-decryption.spec.tsapps/meteor/tests/e2e/apps/apps-modal.spec.tsapps/meteor/tests/e2e/page-objects/fragments/modals/enable-room-encryption-modal.tsapps/meteor/tests/e2e/team-management.spec.ts
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.spec.ts : Implement proper wait strategies for dynamic content in Playwright tests
Applied to files:
apps/meteor/tests/e2e/page-objects/fragments/modals/modal.tsapps/meteor/tests/e2e/page-objects/fragments/navbar.tsapps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-contact-review-modal.tsapps/meteor/tests/e2e/page-objects/fragments/home-omnichannel-content.tsapps/meteor/tests/e2e/page-objects/fragments/modals/confirm-delete-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/enable-room-encryption-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/enter-e2ee-password-modal.ts
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.spec.ts : Use `page.waitFor()` with specific conditions instead of hardcoded timeouts in Playwright tests
Applied to files:
apps/meteor/tests/e2e/page-objects/fragments/modals/modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/reset-e2ee-password-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/enable-room-encryption-modal.tsapps/meteor/tests/e2e/page-objects/fragments/modals/enter-e2ee-password-modal.tsapps/meteor/tests/e2e/e2e-encryption/setupE2EEPassword.ts
📚 Learning: 2025-12-16T17:29:45.163Z
Learnt from: gabriellsh
Repo: RocketChat/Rocket.Chat PR: 37834
File: apps/meteor/tests/e2e/page-objects/fragments/admin-flextab-emoji.ts:12-22
Timestamp: 2025-12-16T17:29:45.163Z
Learning: In page object files under `apps/meteor/tests/e2e/page-objects/`, always import `expect` from `../../utils/test` (Playwright's async expect), not from Jest. Jest's `expect` has a synchronous signature and will cause TypeScript errors when used with web-first assertions like `toBeVisible()`.
Applied to files:
apps/meteor/tests/e2e/federation/page-objects/channel.tsapps/meteor/tests/e2e/voice-calls-ce.spec.tsapps/meteor/tests/e2e/e2e-encryption/e2ee-passphrase-management.spec.tsapps/meteor/tests/e2e/e2e-encryption/e2ee-encryption-decryption.spec.tsapps/meteor/tests/e2e/apps/apps-modal.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.tsapps/meteor/tests/e2e/team-management.spec.tsapps/meteor/tests/e2e/e2e-encryption/setupE2EEPassword.tsapps/meteor/tests/e2e/feature-preview.spec.ts
📚 Learning: 2025-12-18T15:18:31.688Z
Learnt from: gabriellsh
Repo: RocketChat/Rocket.Chat PR: 37773
File: apps/meteor/client/views/mediaCallHistory/MediaCallHistoryInternal.tsx:24-34
Timestamp: 2025-12-18T15:18:31.688Z
Learning: In apps/meteor/client/views/mediaCallHistory/MediaCallHistoryInternal.tsx, for internal call history items, the item.contactId is guaranteed to always match either the caller.id or callee.id in the call data, so the contact resolution in getContact will never result in undefined.
Applied to files:
apps/meteor/tests/e2e/omnichannel/omnichannel-contact-conflict-review.spec.ts
📚 Learning: 2025-10-07T15:08:37.419Z
Learnt from: cardoso
Repo: RocketChat/Rocket.Chat PR: 36942
File: apps/meteor/client/lib/e2ee/pbkdf2.ts:13-45
Timestamp: 2025-10-07T15:08:37.419Z
Learning: In apps/meteor/client/lib/e2ee/pbkdf2.ts, the team has decided to use Latin-1 encoding (via Binary.toArrayBuffer and Binary.toString) for password encoding and decrypt output instead of UTF-8 encoding. This is a deliberate choice for E2EE password/key material handling.
Applied to files:
apps/meteor/tests/e2e/e2e-encryption/e2ee-passphrase-management.spec.tsapps/meteor/tests/e2e/e2e-encryption/setupE2EEPassword.ts
🧬 Code graph analysis (10)
apps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-transfer-chat-modal.ts (1)
apps/meteor/tests/e2e/page-objects/fragments/listbox.ts (1)
Listbox(3-13)
apps/meteor/tests/e2e/page-objects/fragments/modals/save-e2ee-password-modal.ts (1)
apps/meteor/tests/e2e/page-objects/fragments/toast-messages.ts (1)
ToastMessages(5-29)
apps/meteor/tests/e2e/page-objects/fragments/modals/disable-room-encryption-modal.ts (1)
apps/meteor/tests/e2e/page-objects/fragments/toast-messages.ts (1)
ToastMessages(5-29)
apps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-contact-review-modal.ts (1)
apps/meteor/tests/e2e/page-objects/fragments/listbox.ts (1)
Listbox(3-13)
apps/meteor/tests/e2e/page-objects/fragments/modals/reset-e2ee-password-modal.ts (1)
apps/meteor/tests/e2e/page-objects/login.ts (1)
LoginPage(9-55)
apps/meteor/tests/e2e/page-objects/fragments/modals/create-new-modal.ts (1)
apps/meteor/tests/e2e/page-objects/fragments/listbox.ts (1)
Listbox(3-13)
apps/meteor/tests/e2e/page-objects/omnichannel-info.ts (1)
apps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-contact-review-modal.ts (1)
OmnichannelContactReviewModal(7-27)
apps/meteor/tests/e2e/page-objects/fragments/modals/enable-room-encryption-modal.ts (1)
apps/meteor/tests/e2e/page-objects/fragments/toast-messages.ts (1)
ToastMessages(5-29)
apps/meteor/tests/e2e/page-objects/fragments/modals/enter-e2ee-password-modal.ts (1)
apps/meteor/tests/e2e/page-objects/fragments/modals/save-e2ee-password-modal.ts (1)
password(14-16)
apps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.ts (1)
apps/meteor/tests/e2e/page-objects/fragments/modals/omnichannel-confirm-remove-chat.ts (1)
OmnichannelConfirmRemoveChat(5-18)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: cubic · AI code reviewer
Proposed changes (including videos or screenshots)
Issue(s)
Steps to test or reproduce
Further comments
CORE-1574
Summary by CodeRabbit
Tests
Bug Fixes
Chores
Accessibility
✏️ Tip: You can customize this high-level summary in your review settings.