Projects
This is a collection of projects that I have worked on.
-
This website.
This website is built using Astro, Tailwind CSS, and Markdown. It is hosted on Netlify.
-
Playwright JSON Summary Reporter
A custom reporter for Playwright that outputs a JSON summary of test results. I contributed to this project by adding a new feature that allows the user to specify a custom output file path.
-
Playwright Project Showcase
A Playwright test project showcase. Most of this code was used in or inspired by my professional work as an SDET. Key features include: custom, composed fixtures, multi-environment support with setup and teardown, and a custom reporter that outputs a JSON summary of test results for use in other integrations.
-
OvationCXM
A customer experience management platform that helps businesses collect and analyze customer feedback. I contributed to this project by triaging (and sometimes fixing) bugs, and was the primary developer for the automated testing framework.
-
Python SDET Demo
Marketing-event validation platform in Python: contract-first schemas, behavior-first tests, SQL-backed checks, release gates, and observability hooks. Built as a portfolio slice of how I structure SDET work outside the browser.
-
mutate4ts
Mutation testing CLI for TypeScript. Injects faults, runs your suite per mutation, reports survivors. Answers whether these tests actually catch bugs without hand-waving about coverage %.
-
crap4ts
CRAP score calculator for TS/JS: cyclomatic complexity times coverage to flag change-risk hotspots. Clean-room port of crap4clj; useful when you want risk numbers, not just line coverage.
-
rule-validator
CLI and library that scans TS/JS against custom rules (including AGENTS.md-style policies). Pairs with the Custom Rule Validator gist: same problem, shippable tool.
-
Playwright Parameterized Users
Fixture-driven matrix of user configs in Playwright Test, with CI. Smaller than playwright-project-demo but shows how I avoid copy-paste when roles and environments multiply.
-
stepdown-rule
AST analyzer enforcing the stepdown rule (high-level functions up top, details below). TS CLI for keeping large test and support files readable without moving stuff until lint shuts up.
Gists
This is a collection of gists that I have created.
-
Typescript - Recursive Partial Type
-
Typescript - 'One of' Type
-
Typescript - Type-safe Entries
-
Typescript - Branded Types
-
Typescript - Retry Wrapper
-
Playwright - Page & Component Object Model Template
-
ArkType - Environment Variable Validation
-
Playwright - Browser Console Error Fixture
-
ArkType + Neverthrow - Type Validation Wrapper
-
TypeScript - Custom Rule Validator