Skip to content

Conversation

@juliajforesti
Copy link
Contributor

@juliajforesti juliajforesti commented Dec 29, 2025

CORE-1596

Proposed changes (including videos or screenshots)

Issue(s)

Steps to test or reproduce

Further comments

Summary by CodeRabbit

  • Refactor

    • Updated admin settings components for improved maintainability and reduced technical debt.
    • Modernized test infrastructure with semantic, role-based selectors for enhanced test reliability and consistency.
  • Accessibility

    • Improved accessible labeling on multi-select settings components for better assistive technology support.

✏️ Tip: You can customize this high-level summary in your review settings.

@juliajforesti juliajforesti added this to the 8.1.0 milestone Dec 29, 2025
@dionisio-bot
Copy link
Contributor

dionisio-bot bot commented Dec 29, 2025

Looks like this PR is ready to merge! 🎉
If you have any trouble, please check the PR guidelines

@changeset-bot
Copy link

changeset-bot bot commented Dec 29, 2025

⚠️ No Changeset found

Latest commit: b36aecb

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 29, 2025

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

Walkthrough

The PR removes data-qa test attributes from 18 setting input components in the admin settings UI and updates E2E test locators to use role-based and label-based selectors instead of data-qa attributes. The ActionSettingInput component also has its _id parameter removed from the function signature.

Changes

Cohort / File(s) Summary
Setting Input Components
apps/meteor/client/views/admin/settings/Setting/inputs/ActionSettingInput.tsx, BooleanSettingInput.tsx, CodeSettingInput.tsx, ColorSettingInput.tsx, FontSettingInput.tsx, GenericSettingInput.tsx, IntSettingInput.tsx, LanguageSettingInput.tsx, LookupSettingInput.tsx, MultiSelectSettingInput.tsx, PasswordSettingInput.tsx, RangeSettingInput.tsx, RelativeUrlSettingInput.tsx, RoomPickSettingInput.tsx, SelectSettingInput.tsx, SelectTimezoneSettingInput.tsx, StringSettingInput.tsx, TimespanSettingInput.tsx
Removed data-qa-reset-setting-id from ResetSettingButton and/or data-qa-setting-id from child components (InputBox, TextInput, Select, CodeMirror, etc.). ActionSettingInput additionally removes _id parameter from function signature and corresponding DOM attribute. MultiSelectSettingInput adds aria-label attribute with accessibility workaround.
E2E Page Objects
apps/meteor/tests/e2e/page-objects/admin-settings.ts, omnichannel-settings.ts
Updated element locators from data-qa attribute selectors to role-based or text-based selectors (e.g., textbox with accessible name, visible label text).
E2E Test Specs
apps/meteor/tests/e2e/settings-persistence-on-ui-navigation.spec.ts
Replaced data-qa scoped input selectors and text-based button locators with label/role-based selectors (getByLabel, getByRole).

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related PRs

Suggested reviewers

  • juliajforesti
  • MartinSchoeler

Poem

🐰 Hop along, test selectors fade away,
Role-based lookups lead the way,
Data-qa attributes take their rest,
Accessibility is now our quest!
Cleaner code, semantics bloom,
Settings shine in testing's room.

Pre-merge checks and finishing touches

❌ Failed checks (2 warnings)
Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning One out-of-scope change detected: ActionSettingInput.tsx removes the _id parameter from the function signature, which extends beyond the stated objective of removing data-qa attributes. Review whether removing _id from ActionSettingInput's public signature is intentional and separately tracked, or revert this change to keep the PR focused on data-qa attribute removal.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title 'test: remove data-qa-setting-id locators' directly and concisely summarizes the primary change: removing data-qa-setting-id attributes from multiple setting input components and test files.
Linked Issues check ✅ Passed The PR comprehensively addresses the CORE-1596 objective to replace data-qa-setting-id locators. Changes include removing data-qa-setting-id attributes across 15 setting input components and updating test selectors to use role-based and text-based locators instead.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch test/data-qa-setting-id

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@codecov
Copy link

codecov bot commented Dec 29, 2025

Codecov Report

❌ Patch coverage is 38.09524% with 13 lines in your changes missing coverage. Please review.
✅ Project coverage is 70.61%. Comparing base (c6ace77) to head (b36aecb).
⚠️ Report is 1 commits behind head on develop.

Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff             @@
##           develop   #38002      +/-   ##
===========================================
- Coverage    70.64%   70.61%   -0.04%     
===========================================
  Files         3143     3143              
  Lines       108684   108661      -23     
  Branches     19556    19547       -9     
===========================================
- Hits         76781    76727      -54     
- Misses       29902    29932      +30     
- Partials      2001     2002       +1     
Flag Coverage Δ
e2e 60.17% <31.57%> (-0.01%) ⬇️
e2e-api 47.41% <ø> (-0.09%) ⬇️
unit 71.72% <23.80%> (-0.05%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@juliajforesti juliajforesti force-pushed the test/data-qa-setting-id branch from fff5d26 to 90c0ced Compare December 29, 2025 15:11
@github-actions
Copy link
Contributor

github-actions bot commented Dec 29, 2025

📦 Docker Image Size Report

➡️ Changes

Service Current Baseline Change Percent
sum of all images 0B 0B 0B
account-service 0B 0B 0B
authorization-service 0B 0B 0B
ddp-streamer-service 0B 0B 0B
omnichannel-transcript-service 0B 0B 0B
presence-service 0B 0B 0B
queue-worker-service 0B 0B 0B
rocketchat 0B 0B 0B

📊 Historical Trend

---
config:
  theme: "dark"
  xyChart:
    width: 900
    height: 400
---
xychart
  title "Image Size Evolution by Service (Last 30 Days + This PR)"
  x-axis ["11/18 22:53", "11/19 23:02", "11/21 16:49", "11/24 17:34", "11/27 22:32", "11/28 19:05", "12/01 23:01", "12/02 21:57", "12/03 21:00", "12/04 18:17", "12/05 21:56", "12/08 20:15", "12/09 22:17", "12/10 23:26", "12/11 21:56", "12/12 22:45", "12/13 01:34", "12/15 22:31", "12/16 22:18", "12/17 21:04", "12/18 23:12", "12/19 23:27", "12/20 21:03", "12/22 18:54", "12/23 16:16", "12/24 19:38", "12/25 17:51", "12/26 13:18", "12/29 19:01", "12/30 20:52", "01/07 01:32 (PR)"]
  y-axis "Size (GB)" 0 --> 0.5
  line "account-service" [0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.00]
  line "authorization-service" [0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.00]
  line "ddp-streamer-service" [0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.00]
  line "omnichannel-transcript-service" [0.14, 0.14, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.00]
  line "presence-service" [0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.00]
  line "queue-worker-service" [0.14, 0.14, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.00]
  line "rocketchat" [0.35, 0.35, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.00]
Loading

Statistics (last 30 days):

  • 📊 Average: 1.5GiB
  • ⬇️ Minimum: 1.4GiB
  • ⬆️ Maximum: 1.6GiB
  • 🎯 Current PR: 0B
ℹ️ About this report

This report compares Docker image sizes from this build against the develop baseline.

  • Tag: pr-38002
  • Baseline: develop
  • Timestamp: 2026-01-07 01:32:37 UTC
  • Historical data points: 30

Updated: Wed, 07 Jan 2026 01:32:38 GMT

@juliajforesti juliajforesti force-pushed the test/data-qa-setting-id branch from edd8ebc to 9dbdbeb Compare December 29, 2025 18:28
@juliajforesti juliajforesti force-pushed the test/data-qa-setting-id branch from 9dbdbeb to d1b84b0 Compare December 29, 2025 22:19
@juliajforesti juliajforesti marked this pull request as ready for review December 30, 2025 13:23
@juliajforesti juliajforesti requested a review from a team as a code owner December 30, 2025 13:23
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

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

1 issue found across 24 files

Prompt for AI agents (all issues)

Check if these issues are valid — if so, understand the root cause of each and fix them.


<file name="apps/meteor/tests/e2e/settings-persistence-on-ui-navigation.spec.ts">

<violation number="1" location="apps/meteor/tests/e2e/settings-persistence-on-ui-navigation.spec.ts:34">
P1: Race condition: `waitForRequest` is set up after `click()`, so the request may have already been sent before the listener is ready. Set up the promise before triggering the action to avoid flaky tests.</violation>
</file>

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

♻️ Duplicate comments (4)
apps/meteor/client/views/admin/settings/Setting/inputs/TimespanSettingInput.tsx (1)

91-103: Loss of stable test selectors affects test reliability.

Removing data-qa-reset-setting-id and data-qa-setting-id attributes forces tests to use less stable selectors (role/label/text-based), which are vulnerable to localization and text changes. This pattern is repeated across multiple setting input components in this PR.

Based on learnings, data-qa attributes provide more stable test selectors than localized text.

apps/meteor/client/views/admin/settings/Setting/inputs/ColorSettingInput.tsx (1)

56-95: Data-qa attributes removed from multiple inputs.

Removing data-qa attributes from ResetSettingButton, InputBox, TextInput, and Select eliminates stable test hooks across the color setting input component. Tests must now rely on role/label selectors which are less stable.

Based on learnings, data-qa attributes provide better test stability than localized text-based selectors.

apps/meteor/client/views/admin/settings/Setting/inputs/IntSettingInput.tsx (1)

35-47: Data-qa attribute removal impacts test selector stability.

Removing data-qa-reset-setting-id and data-qa-setting-id attributes eliminates stable test hooks. This pattern is consistent across all setting input components in this PR but conflicts with established guidance to prefer data-qa attributes over localized text-based selectors.

Based on learnings, data-qa attributes provide better test stability than text/label-based selectors when UI language changes.

apps/meteor/client/views/admin/settings/Setting/inputs/BooleanSettingInput.tsx (1)

33-34: Data-qa attribute removal reduces test stability.

Removing data-qa-reset-setting-id and data-qa-setting-id attributes forces tests to rely on less stable selectors. Based on learnings, stable data-qa attributes are preferred for test reliability across language changes.

🧹 Nitpick comments (2)
apps/meteor/client/views/admin/settings/Setting/inputs/MultiSelectSettingInput.tsx (1)

55-55: Remove implementation comment per coding guidelines.

The aria-label addition improves accessibility, but the FIXME comment violates coding guidelines: "Avoid code comments in the implementation."

Consider tracking this technical debt in an issue tracker instead.

🔎 Proposed fix
-					aria-label={_id} // FIXME: Multiselect (fuselage) should be associating the FieldLabel automatically. This is a workaround for accessibility and test locators.
+					aria-label={_id}

Would you like me to create an issue to track the Fuselage MultiSelect label association improvement?

apps/meteor/tests/e2e/administration-settings.spec.ts (1)

58-58: Verify necessity of pressSequentially over fill.

The test now uses pressSequentially('any_text') instead of fill('any_text'). While pressSequentially provides more realistic character-by-character input simulation, it's slower and typically unnecessary for standard input fields unless the component has specific event listeners that require incremental input.

Confirm whether this change is necessary for test reliability or if it introduces unnecessary overhead.

📜 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.

📥 Commits

Reviewing files that changed from the base of the PR and between e1e6f7b and d1b84b0.

⛔ Files ignored due to path filters (2)
  • apps/meteor/client/views/admin/ABAC/ABACSettingTab/__snapshots__/SettingToggle.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/views/admin/settings/Setting/inputs/__snapshots__/RangeSettingInput.spec.tsx.snap is excluded by !**/*.snap
📒 Files selected for processing (22)
  • apps/meteor/client/views/admin/settings/Setting/inputs/ActionSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/BooleanSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/CodeSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/ColorSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/FontSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/GenericSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/IntSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/LanguageSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/LookupSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/MultiSelectSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/PasswordSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/RangeSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/RelativeUrlSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/RoomPickSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/SelectSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/SelectTimezoneSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/StringSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/TimespanSettingInput.tsx
  • apps/meteor/tests/e2e/administration-settings.spec.ts
  • apps/meteor/tests/e2e/page-objects/admin-settings.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel-settings.ts
  • apps/meteor/tests/e2e/settings-persistence-on-ui-navigation.spec.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/client/views/admin/settings/Setting/inputs/RelativeUrlSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/GenericSettingInput.tsx
  • apps/meteor/tests/e2e/settings-persistence-on-ui-navigation.spec.ts
  • apps/meteor/client/views/admin/settings/Setting/inputs/SelectSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/PasswordSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/ColorSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/RangeSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/RoomPickSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/MultiSelectSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/ActionSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/SelectTimezoneSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/FontSettingInput.tsx
  • apps/meteor/tests/e2e/administration-settings.spec.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel-settings.ts
  • apps/meteor/client/views/admin/settings/Setting/inputs/BooleanSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/IntSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/StringSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/TimespanSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/LanguageSettingInput.tsx
  • apps/meteor/tests/e2e/page-objects/admin-settings.ts
  • apps/meteor/client/views/admin/settings/Setting/inputs/LookupSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/CodeSettingInput.tsx
**/*.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.ts extension for test files (e.g., login.spec.ts)

Files:

  • apps/meteor/tests/e2e/settings-persistence-on-ui-navigation.spec.ts
  • apps/meteor/tests/e2e/administration-settings.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 in apps/meteor/tests/e2e/ directory
Avoid using page.locator() in Playwright tests - always prefer semantic locators such as page.getByRole(), page.getByLabel(), page.getByText(), or page.getByTitle()
Use test.beforeAll() and test.afterAll() for setup/teardown in Playwright tests
Use test.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
Use expect matchers for assertions (toEqual, toContain, toBeTruthy, toHaveLength, etc.) instead of assert statements in Playwright tests
Use page.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/settings-persistence-on-ui-navigation.spec.ts
  • apps/meteor/tests/e2e/administration-settings.spec.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/settings-persistence-on-ui-navigation.spec.ts
  • apps/meteor/tests/e2e/administration-settings.spec.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel-settings.ts
  • apps/meteor/tests/e2e/page-objects/admin-settings.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/omnichannel-settings.ts
  • apps/meteor/tests/e2e/page-objects/admin-settings.ts
🧠 Learnings (18)
📓 Common learnings
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.
📚 Learning: 2025-10-30T19:30:46.541Z
Learnt from: MartinSchoeler
Repo: RocketChat/Rocket.Chat PR: 37244
File: apps/meteor/client/views/admin/ABAC/AdminABACRoomAttributesForm.spec.tsx:125-146
Timestamp: 2025-10-30T19:30:46.541Z
Learning: In the AdminABACRoomAttributesForm component (apps/meteor/client/views/admin/ABAC/AdminABACRoomAttributesForm.tsx), the first attribute value field is mandatory and does not have a Remove button. Only additional values beyond the first have Remove buttons. This means trashButtons[0] corresponds to the second value's Remove button, not the first value's.

Applied to files:

  • apps/meteor/client/views/admin/settings/Setting/inputs/GenericSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/RoomPickSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/MultiSelectSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/ActionSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/FontSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/IntSettingInput.tsx
  • apps/meteor/client/views/admin/settings/Setting/inputs/StringSettingInput.tsx
📚 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/settings-persistence-on-ui-navigation.spec.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel-settings.ts
  • apps/meteor/client/views/admin/settings/Setting/inputs/LanguageSettingInput.tsx
  • apps/meteor/tests/e2e/page-objects/admin-settings.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/settings-persistence-on-ui-navigation.spec.ts
  • apps/meteor/tests/e2e/administration-settings.spec.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel-settings.ts
  • apps/meteor/tests/e2e/page-objects/admin-settings.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/settings-persistence-on-ui-navigation.spec.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel-settings.ts
  • apps/meteor/tests/e2e/page-objects/admin-settings.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/settings-persistence-on-ui-navigation.spec.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel-settings.ts
  • apps/meteor/tests/e2e/page-objects/admin-settings.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/settings-persistence-on-ui-navigation.spec.ts
  • apps/meteor/tests/e2e/administration-settings.spec.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel-settings.ts
  • apps/meteor/tests/e2e/page-objects/admin-settings.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/page-objects/**/*.ts : Utilize existing page objects pattern from `apps/meteor/tests/e2e/page-objects/`

Applied to files:

  • apps/meteor/tests/e2e/settings-persistence-on-ui-navigation.spec.ts
  • apps/meteor/tests/e2e/administration-settings.spec.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel-settings.ts
  • apps/meteor/tests/e2e/page-objects/admin-settings.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/settings-persistence-on-ui-navigation.spec.ts
  • apps/meteor/tests/e2e/administration-settings.spec.ts
  • apps/meteor/tests/e2e/page-objects/admin-settings.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/settings-persistence-on-ui-navigation.spec.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel-settings.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/settings-persistence-on-ui-navigation.spec.ts
  • apps/meteor/tests/e2e/administration-settings.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/settings-persistence-on-ui-navigation.spec.ts
  • apps/meteor/tests/e2e/administration-settings.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 : Ensure clean state for each test execution in Playwright tests

Applied to files:

  • apps/meteor/tests/e2e/administration-settings.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/administration-settings.spec.ts
  • apps/meteor/tests/e2e/page-objects/admin-settings.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/administration-settings.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 : All test files must be created in `apps/meteor/tests/e2e/` directory

Applied to files:

  • apps/meteor/tests/e2e/administration-settings.spec.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/omnichannel-settings.ts
  • apps/meteor/tests/e2e/page-objects/admin-settings.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/admin-settings.ts
⏰ 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). (10)
  • GitHub Check: cubic · AI code reviewer
  • GitHub Check: cubic · AI code reviewer
  • GitHub Check: cubic · AI code reviewer
  • GitHub Check: cubic · AI code reviewer
  • GitHub Check: cubic · AI code reviewer
  • GitHub Check: cubic · AI code reviewer
  • GitHub Check: cubic · AI code reviewer
  • GitHub Check: cubic · AI code reviewer
  • GitHub Check: cubic · AI code reviewer
  • GitHub Check: cubic · AI code reviewer
🔇 Additional comments (15)
apps/meteor/client/views/admin/settings/Setting/inputs/RelativeUrlSettingInput.tsx (1)

36-36: Attribute removal aligns with PR objective.

The removal of data-qa-reset-setting-id is consistent with the PR's goal. See concerns raised in RoomPickSettingInput.tsx regarding test stability.

apps/meteor/client/views/admin/settings/Setting/inputs/StringSettingInput.tsx (1)

40-40: Attribute removal aligns with PR objective.

The removal of data-qa-reset-setting-id is consistent with the PR's goal. See concerns raised in RoomPickSettingInput.tsx regarding test stability.

apps/meteor/client/views/admin/settings/Setting/inputs/PasswordSettingInput.tsx (1)

33-33: Attribute removal aligns with PR objective.

The removal of data-qa-reset-setting-id is consistent with the PR's goal. See concerns raised in RoomPickSettingInput.tsx regarding test stability.

apps/meteor/client/views/admin/settings/Setting/inputs/GenericSettingInput.tsx (1)

35-35: Attribute removal aligns with PR objective.

The removal of data-qa-reset-setting-id is consistent with the PR's goal. See concerns raised in RoomPickSettingInput.tsx regarding test stability.

apps/meteor/client/views/admin/settings/Setting/inputs/SelectTimezoneSettingInput.tsx (1)

34-34: Attribute removal aligns with PR objective.

The removal of data-qa-reset-setting-id is consistent with the PR's goal. See concerns raised in RoomPickSettingInput.tsx regarding test stability.

apps/meteor/client/views/admin/settings/Setting/inputs/MultiSelectSettingInput.tsx (1)

42-42: Attribute removal aligns with PR objective.

The removal of data-qa-reset-setting-id is consistent with the PR's goal. See concerns raised in RoomPickSettingInput.tsx regarding test stability.

apps/meteor/client/views/admin/settings/Setting/inputs/RangeSettingInput.tsx (1)

33-33: Attribute removal aligns with PR objective.

The removal of data-qa-reset-setting-id is consistent with the PR's goal. See concerns raised in RoomPickSettingInput.tsx regarding test stability.

apps/meteor/client/views/admin/settings/Setting/inputs/RoomPickSettingInput.tsx (1)

39-39: Update admin-settings.ts page object to use semantic locator for reset button.

The btnResetSiteURL selector in admin-settings.ts line 19 currently uses an XPath expression that depends on DOM structure. Replace the XPath selector with a semantic locator using getByRole() to ensure test stability across UI changes and language variations. For example: this.page.getByRole('button', { name: /reset/i }).first() or a similar approach based on accessible attributes.

⛔ Skipped due to 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/**/*.spec.ts : Avoid using `page.locator()` in Playwright tests - always prefer semantic locators such as `page.getByRole()`, `page.getByLabel()`, `page.getByText()`, or `page.getByTitle()`
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.
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/**/*.{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/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/**/*.spec.ts : Prefer web-first assertions (`toBeVisible`, `toHaveText`, etc.) 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/**/*.spec.ts : Utilize Playwright fixtures (`test`, `page`, `expect`) for consistency in test files
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
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
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()`.
apps/meteor/client/views/admin/settings/Setting/inputs/FontSettingInput.tsx (1)

35-46: [Rewritten review comment]
[Exactly ONE classification tag]

apps/meteor/client/views/admin/settings/Setting/inputs/BooleanSettingInput.tsx (1)

33-35: The referenced prop mie={8} is not removed and remains present on line 33.

The ResetSettingButton includes the mie={8} margin-inline-end prop in the current code. There is no spacing change to verify because the prop was not removed.

Likely an incorrect or invalid review comment.

apps/meteor/client/views/admin/settings/Setting/inputs/CodeSettingInput.tsx (1)

41-41: LGTM: QA attribute removal is clean.

The removal of data-qa-reset-setting-id simplifies the component interface without affecting functionality.

apps/meteor/client/views/admin/settings/Setting/inputs/ActionSettingInput.tsx (1)

16-16: LGTM: Unused prop removal is appropriate.

The _id prop has been correctly removed from the function signature since it was only used for the now-removed data-qa-setting-id attribute.

apps/meteor/client/views/admin/settings/Setting/inputs/SelectSettingInput.tsx (1)

40-40: LGTM: QA attribute removal is consistent.

The removal of data-qa-reset-setting-id aligns with the PR objective and simplifies the component API.

apps/meteor/client/views/admin/settings/Setting/inputs/LookupSettingInput.tsx (1)

49-49: LGTM: Consistent QA attribute cleanup.

The removal of data-qa-reset-setting-id is consistent with the broader refactor across all settings input components.

apps/meteor/client/views/admin/settings/Setting/inputs/LanguageSettingInput.tsx (1)

36-36: LGTM: Final QA attribute removal completed.

The removal of data-qa-reset-setting-id completes the consistent cleanup across all settings input components.

@dougfabris dougfabris added the stat: QA assured Means it has been tested and approved by a company insider label Jan 5, 2026
@dionisio-bot dionisio-bot bot added the stat: ready to merge PR tested and approved waiting for merge label Jan 5, 2026
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

♻️ Duplicate comments (1)
apps/meteor/tests/e2e/settings-persistence-on-ui-navigation.spec.ts (1)

38-39: Translated strings in selectors will break when UI language changes.

As noted in the previous review, using translated strings like 'Save changes' and 'Back' in getByRole selectors will cause test failures when the UI language changes. Consider using stable data-qa-id attributes instead, or implement a Page Object Model with stable selectors.

Note: This test is currently skipped, so address this when re-enabling it.

Based on learnings, prefer stable selectors like data-qa-id attributes over localized text in getByRole() calls.

🧹 Nitpick comments (1)
apps/meteor/tests/e2e/settings-persistence-on-ui-navigation.spec.ts (1)

45-45: Reuse the stored locator variable.

The locator page.getByLabel('Hide_System_Messages') is duplicated here instead of reusing the settingInput variable defined on line 29. Consider extracting the label locator or adjusting the test to reuse the existing variable.

💡 Example refactor
-await expect(page.getByLabel('Hide_System_Messages').getByRole('option', { name: 'User joined' })).toBeVisible();
+const hideSystemMessagesGroup = page.getByLabel('Hide_System_Messages');
+await expect(hideSystemMessagesGroup.getByRole('option', { name: 'User joined' })).toBeVisible();

Alternatively, if the structure allows, you could check visibility directly on the settingInput variable's parent context.

As per coding guidelines, store commonly used locators in variables/constants for reuse.

📜 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.

📥 Commits

Reviewing files that changed from the base of the PR and between d1b84b0 and 78907ca.

📒 Files selected for processing (1)
  • apps/meteor/tests/e2e/settings-persistence-on-ui-navigation.spec.ts
🧰 Additional context used
📓 Path-based instructions (4)
**/*.{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/settings-persistence-on-ui-navigation.spec.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.ts extension for test files (e.g., login.spec.ts)

Files:

  • apps/meteor/tests/e2e/settings-persistence-on-ui-navigation.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 in apps/meteor/tests/e2e/ directory
Avoid using page.locator() in Playwright tests - always prefer semantic locators such as page.getByRole(), page.getByLabel(), page.getByText(), or page.getByTitle()
Use test.beforeAll() and test.afterAll() for setup/teardown in Playwright tests
Use test.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
Use expect matchers for assertions (toEqual, toContain, toBeTruthy, toHaveLength, etc.) instead of assert statements in Playwright tests
Use page.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/settings-persistence-on-ui-navigation.spec.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/settings-persistence-on-ui-navigation.spec.ts
🧠 Learnings (14)
📓 Common learnings
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.
📚 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/settings-persistence-on-ui-navigation.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/**/*.{ts,spec.ts} : Store commonly used locators in variables/constants for reuse

Applied to files:

  • apps/meteor/tests/e2e/settings-persistence-on-ui-navigation.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/settings-persistence-on-ui-navigation.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 : Prefer web-first assertions (`toBeVisible`, `toHaveText`, etc.) in Playwright tests

Applied to files:

  • apps/meteor/tests/e2e/settings-persistence-on-ui-navigation.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/page-objects/**/*.ts : Utilize existing page objects pattern from `apps/meteor/tests/e2e/page-objects/`

Applied to files:

  • apps/meteor/tests/e2e/settings-persistence-on-ui-navigation.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 : Utilize Playwright fixtures (`test`, `page`, `expect`) for consistency in test files

Applied to files:

  • apps/meteor/tests/e2e/settings-persistence-on-ui-navigation.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/settings-persistence-on-ui-navigation.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/settings-persistence-on-ui-navigation.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 : Ensure tests run reliably in parallel without shared state conflicts

Applied to files:

  • apps/meteor/tests/e2e/settings-persistence-on-ui-navigation.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 : Ensure clean state for each test execution in Playwright tests

Applied to files:

  • apps/meteor/tests/e2e/settings-persistence-on-ui-navigation.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/settings-persistence-on-ui-navigation.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 `page.waitFor()` with specific conditions instead of hardcoded timeouts in Playwright tests

Applied to files:

  • apps/meteor/tests/e2e/settings-persistence-on-ui-navigation.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/settings-persistence-on-ui-navigation.spec.ts
⏰ 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)
  • GitHub Check: 📦 Build Packages
  • GitHub Check: CodeQL-Build
  • GitHub Check: CodeQL-Build

@kodiakhq kodiakhq bot merged commit 5ff2596 into develop Jan 7, 2026
44 checks passed
@kodiakhq kodiakhq bot deleted the test/data-qa-setting-id branch January 7, 2026 01:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

stat: QA assured Means it has been tested and approved by a company insider stat: ready to merge PR tested and approved waiting for merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants