emmanueloga_ 2 hours ago

Page Object Models trade off clarity for encapsulation. Concrete example [1]. They can make tests look "cleaner" but often obscure what's actually happening. For example:

    await page.getStarted(); // what does this actually do?
vs

    await page.locator('a', { hasText: 'Get started' }).first().click();
    await expect(page.locator('h1', { hasText: 'Installation' })).toBeVisible();
The second version is explicit and self-documenting. Tests don't always benefit from aggressive DRY, but I've seen teams adopt POMs to coordinate between SDETs and SWEs.

--

1: https://playwright.dev/docs/pom

  • pintxo 11 minutes ago

    Well, if you have tests with 100+ lines of such explicitness, it becomes really hard to see the high level picture of „what is tested here“.

    As usually, there is a balance to be found.

  • rullopat 14 minutes ago

    So if you have a page that is common between, lets say, 30-40 tests, you prefer to copy/paste the new selectors everywhere?

  • zikani_03 an hour ago

    I am working on a tool[1] to try to make working with playwright a bit more ergonomic and approachable. Sorry to shamelessly plug but I'd love feedback on if it is even a good idea/direction.

    Hadn't considered the Page Object Model and will definitely have to consider how to incorporate that for those who want to do things that way.

    ---

    1: https://github.com/zikani03/basi

oweiler 2 hours ago

This is honestly the main reason I prefer Playwright to Cypress. Playwright leans heavily into using POs, while for some reason Cypress doesn't.

So in almost every project the Cypress tests are a procedural mess, while the Playwright tests are mostly well structured.

I know that Cypress has other patterns for dealing with this but they never seem to get applied.

a_t48 2 hours ago

I'm not really a UI guy, but isn't this MVC (or some subset)?

  • vasusen 2 hours ago

    It is quite popular in testing circles to write e2e tests that are easier to maintain. However, in practice I have found it to be quite useless due to the time it takes to write good page objects. QA teams usually rely on a complete POM before writing tests on it. I used to joke that by the time my team was done shipping a page object model, our product team would have changed the entire product again.

  • serial_dev 2 hours ago

    Page object is a useful model for writing maintainable tests