Member-only story
Playwright vs Selenium WebDriver Syntax Comparison by Example
Raw Selenium WebDriver with Ruby Binding is much better.

Zhimin: A repost of my daughter’s article with permission. I added a few notes. Many test automation engineers (most of them are fake) say, “The new Playwright is better than Selenium”. They often quote one or two non-essential tool features (e.g. waiting), rather than focusing on the framework and test script, which really matters when doing real E2E test automation.
In my intern role early this year, I developed a set of automated test scripts. To be exact, 29 test cases, running reliably on a daily basis. My colleagues and managers were impressed.
I started with Selenium WebDriver with Rspec first. Later, I was told to use Playwright by the department’s test automation guru (of a large telecom company). As a 20-year-old fresh-out-of-Uni intern, of course, I listened. I did the Selenium Ruby version for new test scenarios first (much easier) and then converted it to Playwright. I also set up two build projects in the BuildWise CT server to run both versions daily.
This article will show the syntax difference between Playwright and Selenium, using a simple test case (login test) as an example.
· Comparison with a simple test case
· Understand Automated Test Script Tiered Structure
· While Real Test Automation is Hard, it is still achievable
· Choose a Good Scripting Language
· Zhimin’s Notes
Comparison with a simple test case
Raw Selenium (Ruby):
driver.find_element(:id, "username").send_keys("agileway")
driver.find_element(:name, "password").send_keys("testwise")
driver.find_element(:xpath, "//input[@value='Sign in']").click
expect(driver.find_element(:tag_name, "body").text).to include("Signed in")
Playwright (JavaScript):
await driver.fill("#username", "agileway")
await driver.fill("#password", "testwise")
await driver.click("input:has-text('Sign in')")
await driver.textContent("body").then(function(body_text) {
assert(body_text.contains("Signed in"))
})