About a month ago, I made a controversial post on LinkedIn that got a lot of attention.
Not that I wanted to go viral. It was my honest opinion. The more I use coding agents to write tests, the more I realize that I don't want to use Page Objects anymore.
Let me explain.
Why do engineers use page objects?
It's not to show your colleagues how smart you are.
Page objects have (had) a clear goal: group test steps into reusable components (methods) so they can be reused in tests, rather than copy/pasting plain code. Also, page objects simplified code maintenance, as an engineer could make a change in just a single place to update multiple tests at once.
Very reasonable, right?
Since 2017, when I jumped into test automation, I have used Page Objects in every framework: Selenium with Java, Selenium with C#, Selenide, Cypress, and Playwright. Everywhere.
I remember spending about a month building a page-objects framework with Cypress so I could automate 700+ tests over the next 1.5 months. There is no way I could do it without a bunch of reusable methods that I created in advance.
Page objects also have problems.
For example:
- Poor naming conventions make it confusing and lead to duplicated implementations.
- Overengineering with multiple levels of abstractions makes the framework harder to use and maintain.
- Abstraction hides the test logic, making tests difficult to understand without digging into the page object code.
And so on and so forth...
When we wrote code manually, the advantages of page objects outweighed the disadvantages. But not anymore...
At the end of 2025, coding agents reached a point where writing code manually no longer made economic sense. A coding agent can do it faster than a human, as long as the human knows enough to guide it.
Fall of Page Objects
Page Objects were needed to help humans read, understand, and reuse code faster. But since coding agents now write code, do they need page objects?
They don't!
Coding agents can quickly understand large codebases, all your tests, their context, and update hundreds of lines without a sweat. They can do it with page objects or without. It does not matter to them.
So what is the role of the human then?
Review, review, review!
You review the result and guide the agent on what to do next. The sooner you can provide a quality review of the generated code, the sooner you can set the new task.
So the bottleneck now is not writing new tests. It's reviewing them!
And here, I have noticed that reviewing test code written with page objects takes more time than reviewing a plain Playwright script.
Why? Because if an agent generates a bunch of page object methods, you can't just read the method name and trust that the underlying code is correct. You also need to review the method implementation. And understand it. And build a mental model of the test flow in your head, connecting all those methods one by one.
All this consumes your time and adds no value.
Playwright code is very readable when written using user-visible locators and good naming conventions for constants.
Reading a plain Playwright script is faster than reading abstractions. When a test fails, you see exactly where it happened in the test, instead of digging deep into the abstraction methods.
I go deeper on this in my new Claude Code for Playwright course. There's a full lesson on it, "Do You Still Need Page Objects?", with real code examples. I'll also record a YouTube video on this soon, subscribe so you don't miss it :)
I made a choice
I can be wrong with my thesis, but it's the first time in my test automation career that I don't want to create Page Objects anymore. I realized I can move faster without them while keeping the high quality of the test automation framework.
Coding agents are only getting better, and a new skill we need to learn is not page objects, it's how to stay in the loop with the agent so it can produce high-quality automated tests that catch bugs.
Talk soon.
Artem
P.S.
If you live in California, next month I'll be co-hosting the first in-person workshop on Playwright test automation with coding agents. I'll be glad to meet in person! More details here. I hope to see you!