bcquality/microsoft/knowledge/testing/use-testpage-visible-enabled-to-verify-field-ui-state.md
Michael Dieringer e538664a50 Address Jesper Schulz-Wedde's review on PR #158
- use-generateguid-for-unique-test-fixture-values.md: GenerateGUID()
  is a Code[10] number-series value, not a real GUID; truncating it
  with CopyStr for a shorter field cuts off the changing digits. Point
  to GenerateRandomCode/GenerateRandomCodeWithLength/GenerateRandomXMLText
  instead, which verify uniqueness against the actual table.
- Split use-testpage-visible-enabled-to-verify-field-ui-state.md: drop
  its editability claim (the sample opens with OpenView() and asserts
  Enabled(), which verifies enabled state, not editability — Editable()
  and Enabled() are distinct TestField methods). New companion article
  use-testpage-editable-to-verify-field-editability.md covers Editable()
  with OpenEdit() specifically.
- Wire GenerateGUID/CopyStr and TestPage Visible/Enabled/Editable cues
  into al-testing-review.md, and the Item Ledger Entry/Last Shipping No.
  posting cue into al-data-modeling-review.md.

The Item Ledger Entry article itself was independently verified against
current BCApps source and needs no changes.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-21 22:34:40 +02:00

1.4 KiB

bc-version domain keywords technologies countries application-area
all
testing
testpage
visible
enabled
ui-state
headless-test
field-verification
al
w1
all

Verify field visibility and enabled state with TestPage.Visible()/.Enabled()

Description

A UI test codeunit does not need to inspect table or page properties indirectly to confirm a field is shown or enabled under given conditions. The TestPage object exposes a Visible() and an Enabled() function on each field, reflecting the page's actual rendered state, callable directly from a [Test] procedure. Enabled() and Editable() are distinct states — this article covers visibility/enabled state specifically; see use-testpage-editable-to-verify-field-editability.md for verifying whether a field can actually be changed.

Best Practice

Open the TestPage, navigate to the relevant record if needed, then assert against TestPageField.Visible() and TestPageField.Enabled() to verify the field's shown/enabled state, rather than checking an unrelated table/page property or skipping the check.

See sample: use-testpage-visible-enabled-to-verify-field-ui-state.good.al.

Anti Pattern

A test that opens the TestPage but never asserts against Visible()/Enabled() on the field in question — confirming only that the page opens, not that the field behaves as expected.

See sample: use-testpage-visible-enabled-to-verify-field-ui-state.bad.al.