What is the Page Object Model (POM) and why is it used in test automation?
Implement resolve_test_steps(page_objects, steps) to demonstrate the separation between logical test actions and UI selectors. Each page object contains selectors and may inherit elements from a parent page.
Input: A map of page names to page definitions, and an ordered array of actions containing page, element, action, and an optional value. Supported actions are click, type, and select.
Output: Return one result per action, resolving inherited selectors. Return a successful result with the selector, or an error result for an unknown page, unknown element, or unsupported action.
Constraints: page inheritance is acyclic; child elements override parent elements.
def resolve_test_steps(page_objects, steps):