Nithyakarma Quality Lab

The same 39 test cases, written twice: Playwright (TypeScript) and Selenium (Java + TestNG), against the live app.

Last run 10 Oct 2026, 8:43 am IST · commit f8b136c · CI run
Target: nithykarma.netlify.app (Netlify origin: the production build without the Cloudflare proxy, used as the CI test URL)

Playwright

37 / 39 passed
Failed
0
Skipped
2
Wall time
69s
Full Playwright report

Selenium

37 / 39 passed
Failed
0
Skipped
2
Wall time
123s
Full Selenium report

Parity

39 / 39 agree
Test cases
39
Same result in both
100%

Test cases

IDTest casePlaywrightSelenium
Login page
TC-01Login page renders all elementspassed1.2spassed2.4s
TC-02Validation: bad email formatpassed0.6spassed1.1s
TC-03Validation: email missing domainpassed0.7spassed1.1s
TC-04Validation: password 7 charspassed0.5spassed1.2s
TC-05Validation: valid emailpassed0.5spassed0.6s
TC-06Validation: password exactly 8 charspassed0.5spassed1.2s
TC-07Validation: empty emailpassed0.5spassed1.3s
TC-08Validation: empty passwordpassed0.5spassed1.1s
Security (negative)
TC-09Captcha blocks an automated browser loginpassed12spassed14s
TC-10API rejects login without a captcha tokenpassed0.4spassed2.1s
Today
TC-11Header shows logo, tabs, streak pill and logoutpassed1.2spassed0.5s
TC-12Every tab navigates to its pagepassed1.8spassed3.1s
TC-13Greeting shows today (IST) and the user namepassed1.6spassed0.6s
TC-14Panchangam box and three kalamspassed1.0spassed1.1s
TC-15Family switcher shows Me and Add childpassed0.6spassed0.0s
TC-16Add child opens the profile family sectionpassed0.7spassed0.1s
TC-17Streak card: current, best, punya, tierpassed0.7spassed0.0s
TC-18Anushtanams list: sandhya slots and Mark Donepassed1.4spassed0.6s
TC-19Mark one sandhya slot (opt-in write)skipped0.7sskipped0.0s
Add anushtanam
TC-20Picker lists options, tracked ones disabledpassed1.8spassed0.6s
TC-21Search filters the pickerpassed1.5spassed0.7s
TC-22Add an untracked anushtanam (opt-in write)skipped1.2sskipped0.0s
Learning
TC-23Lists every read-along practicepassed1.2spassed0.3s
TC-24Hanuman Chalisa reader and language switchpassed1.3spassed0.2s
History
TC-25Family switcher and dated entriespassed2.0spassed1.3s
Sabha
TC-26Defaults to this week and shows my rowpassed1.3spassed0.1s
TC-27Week / Month / Kids switch the boardpassed1.2spassed0.2s
Calendar
TC-28Day view: panchangam details and kalamspassed1.7spassed0.2s
TC-29Next and Previous move a day and backpassed1.9spassed0.2s
TC-30Week and Month viewspassed1.9spassed0.2s
Profile
TC-31Name, tier progress and statspassed1.6spassed0.1s
TC-32Save enabled only after the name changespassed1.8spassed0.2s
TC-33Delete account disabled without the emailpassed1.5spassed0.1s
TC-34Footer linkspassed1.6spassed0.1s
Settings round-trips
TC-35Add a child and remove itpassed2.9spassed1.5s
TC-36Tradition switches and switches backpassed2.7spassed1.9s
TC-37Marital status switches and switches backpassed2.4spassed2.0s
TC-38Leaderboard opt-in toggles and toggles backpassed2.7spassed2.1s
Logout
TC-39Logout returns to the login pagepassed2.1spassed1.1s

How the two suites differ

Playwright (TS)Selenium (Java)
LoginSetup project logs in once via Supabase magic link, saves storageStateSame magic link, session injected into localStorage per test
WaitingAuto-waiting locators and web-first assertionsExplicit WebDriverWait conditions in page objects
LocatorsRole and label based (getByRole, getByLabel)CSS and XPath (no accessibility-tree locators)
ExecutionParallel workers, projects for orderingSequential, TestNG <test> blocks for ordering
Network waitspage.waitForResponse, built in (~210 ms per save)WebDriver BiDi listener + CountDownLatch (~228 ms per save; ~533 ms with default WebDriverWait polling)
Session start~70 ms browser launch~880 ms ChromeDriver session, ~110 ms more with BiDi
Data-drivenLoop over a cases arrayTestNG @DataProvider
API testsBuilt-in request fixtureREST Assured
CaptchaNot bypassed in the UI: kept as a negative test. Logged-in tests use the admin magic link instead.