Files
mattermost/webapp/channels
JG HeithcockandMattermost Build 8f45806004 MM-63588: Add e2e tests for System Console User Attributes (#35931)
* MM-63588: Add e2e tests for System Console Custom Profile Attributes

Add Playwright e2e tests for the System Console User Attributes page,
covering CRUD operations for custom profile attribute field definitions.

Tests cover:
- Page navigation and empty state display
- Creating text, select, and multiselect attributes with options
- Editing attribute names
- Deleting attributes (saved and unsaved)
- Duplicating attributes
- Changing attribute types (Text to Phone)
- Configuring visibility (Always show/Hide when empty/Always hide)
- Toggling "Editable by users" setting
- Batch creation (multiple attributes at once)
- Persistence verification after page reload
- Validation warnings (empty name, duplicate names)

Follows the same patterns established in MM-62558 / PR #30722 for
Profile Popup CPA tests, reusing shared helpers for field setup/cleanup.

* Fix 6 failing e2e tests for System Console User Attributes

- Remove .clear() before .fill() to prevent value-based locators from
  going stale (edit name, persist after reload tests)
- Hover on visibility submenu instead of click, use force:true to handle
  DOM detach during menu animation (visibility test)
- Press Escape to close dot menu before clicking Save, since the
  "Editable by users" toggle keeps the menu open (editable test)
- Fix expected validation text: use "Attribute names must be unique."
  instead of "Attribute name already taken." (duplicate names test)
- Increase timeout for Save button disabled assertion after deleting
  unsaved attribute (delete unsaved test)

* Fix stale locators, flaky save check, and document dirty-state bug

- Use data-testid locators instead of value-based selectors for inputs
  that get mutated by fill() (edit name + persist reload tests)
- Wait for Save button to return to disabled after save before API
  check to avoid flaky field-not-found failures
- Add test.fail() for Save-stays-enabled bug after deleting an unsaved
  row so CI passes today and alerts when the app bug is fixed
- Add LOCATOR NOTE to file header explaining the lazy locator pitfall

* Address CodeRabbit review: save helper, locator fix, test rename

- Add saveAndWaitForSettled() helper and apply to all 11 save paths
  for consistent post-save stabilization before API verification
- Fix deptInput locator: use input[value] instead of broken
  filter({hasText}) which doesn't match input element children
- Rename "different types" test to "multiple text attributes" to
  match actual coverage

* MM-63588: add SystemProperties page object and refactor spec to POM

Extract all UI selectors from user_attributes.spec.ts into a
SystemProperties page object class, eliminating inline selectors
from the test file. Replace coarse networkidle with waitForResponse
on the actual save API endpoint.

* fix playwright e2e test failures

- selectType was failing as 'select' caught both 'select' and 'multi-select'
- Prior behavior where Save button wasn't returning to disabled appears to be working now, removing test.fail()

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2026-04-11 02:42:53 +00:00
..