Programming Projects

To deepen my knowledge on what I am learning on-the-job, I build a parallel side project using the same toolsets. It is how I scale the learning curve and shorten the time I need to ramp-up, verifying that I understand the material. It is where I tease out new ideas, soliciting feedback from experts in the field, keeping my finger on the pulse of new software testing techniques and reshape them for the workplace.  It's where I start writing the initial draft of the training classes I will be building for the workplace. It's  where I research new ideas before introducing them to the team.  

Who made this testing tool we are using at work? Who initially created it? How has it evolved? What was the initial problem it tried to solve? What inspired it? If its an open source tool, I examine the code to see how the toolset tests itself. I strike up a conversation with the testing experts who are writing the blog posts, the articles, the technical talks describing how the tool can really be used and bring this knowledge into the workplace. 

My research notes on-the-job becomes a new blog entry. The blog entry + feedback from the testing community becomes the on-the-job Confluence documentation and proof-of-concepts I demo at work and the training course I am setting up. That then can become articles for the company blog, and lectures to outside software testing guilds and online courses.   

More can be found on my GitHub site. To see general blog entries on building automated test frameworks, go to the Table of Contents.

Below are automation frameworks written in TypeScript, Ruby, JavaScript, Java, and Python, using Detox, Capybara, Watir, Appium, Rest Assured, and Selenium WebDriver. 

Claude AI and Cursor AI have also been placed in head-to-head matchups seeing how they set up test frameworks using Playwright + Cypress. Lately, I have been exploring what an "AI QA" role might be.  

Featured Projects


DetoxDemo: Testing a React Native mobile app with Detox + TypeScript
January 2026

This demo project became a TestGuild.com talk for the Automation Guild 2026 online conference (See Slides) and an upcoming Software Quality Group of New England ( sqgne.org) talk on May 20, 2026 in Burlington, MA. Based on my work building from scratch a React Native mobile automation framework using Wix's Detox + TypeScript + GitHub Action workflows + Allure Reports at SELF ID. Tested against my first  "vibe coded" React Native application, based on Dave Haefner's test site, The-Internet. 



Introduction to Capybara: A TestAutomationU course
May 2019

Free Test Automation University course based on my training sessions I put together while at Threat Stack, constructing a Capybara + Ruby + GitLab + Docker + Chef + AWS test automation framework. Course includes visual testing examples using Capybara + Ruby + Headless Chrome + Applitools. 


    Other Projects


    Becoming AI QA
    March 2026

    An investigation into what it takes to test AI systems: Python tooling, LLM validation, and what distinguishes AI QA work from conventional automation.
    Claude Sonnet: Claude-Cypress-Login
    March 2026

    A structured evaluation of whether an AI coding assistant can build a production-quality Cypress + TypeScript framework from natural language prompts alone. The methodology: require the model to explain each design decision as it goes, then verify its claims against cited sources. The goal was to identify where AI-assisted test development requires human intervention and where it holds up on its own. 

    Claude Sonnet Over-Engineered My Playwright Login!
    March 2026

    Does an automation framework for a Playwright Login page need to dive into Martin Fowler's concepts of Dependency Injection, Singleton, TestDouble patterns along with the standard Page Object patterns? Standards set by ISTQB and OWASP? Documentation from the Refactoring Guru, The Gang of Four? Claude Sonnet 4 thinks so!

    Playwright Generate Plans: Playwright + TypeScript:
    February 2026

    Testing out how Playwright-Test-Planner and Playwright-Test-Generator, two plugins for GitHub Copilot, can create a test plan in Markdown, then write an automated test framework in Playwright + TypeScript against it, adding in page objects and reporting just by prompting. 

    Cursor Creates: Playwright + C-Sharp:
    February 2026 

    It's a head-to-head matchup! Cursor AI versus VS Code + GitHub Copilot battling to create automated test frameworks using MS Playwright + C#. Who creates the best tests for The-Internet / Login? The best GitHub Actions Workflow? The best README docs? And can it be created only using prompts?

    Login C Sharp
    February 2026

    The test: Given a website, such as https://the-internet.herokuapp.com/login, can GitHub Copilot examine the website, and create through only prompting an automated test framework using C#, NUnit, and Playwright? Can it set up a GitHub Actions Workflow and produce detailed documentations once a list of requirements are given? How much steering is needed? And how badly will it go off the rails? 


    The Cheezy Internet: Creating a Ruby + Watir + Cucumber automation framework with Jeff Morgan's Page-Object gem:
    November 2021

    Built to get up to speed on MassMutual's Ruby + Watir + Cucumber stack before working in the production codebase. Uses Jeff Morgan's Page-Object gem against Dave Haefner's The-Internet test site.

    Are you sure the buses are still listed?
    Data-driven API tests with Ruby + NET::HTTP + ThoughtWorks Gauge


    Basic Capybara-Gauge 
    December 2018

    Based on my work at Threat Stack building a test automation framework for their security application. Threat Stack required it be written in Ruby + Gauge + Gitlab, a toolset I was of yet unfamiliar with. Capybara + Ruby + Headless Chrome + Rubocop.

    Discovering Docker
    Spring & Summer 2018

    Infrastructure work in support of a Threat Stack test automation project: standing up a Selenium Grid on AWS using Docker Compose and SeleniumHQ images, then configuring Ubuntu with Docker and exploring Chef + Test Kitchen for environment provisioning. 

    Tinkering with Twitter
    October 2017

    Demo project created for an interview at Twitter. Uses Twitter4J Java library. Thank you, Angie Jones for referring me! 

    While working as a manual tester on a contract at Ahold, the parent company of Stop & Shop supermarkets, I designed a proof-of-concept that I demoed for them, trying to convince them to hire me as an automation developer creating a brand new mobile automation framework. Designing and documenting the architecture in public before writing production code let the blog posts serve as the technical spec during the pitch. 

    Evaluating Appium Desktop
    April 2017

    While working as a manual tester on a contract at Ahold, the parent company of Stop & Shop supermarkets, I decided I wanted to create a proof-of-concept of a mobile automation framework. They wanted to see what toolsets I could use. These are my research notes. 

    Evaluating Serenity BDD
    March 2017

    Starting a new QA Contract at Ahold, the parent company of Stop & Shop supermarkets, before showing it to the stakeholders, I investigated on this blog how I wanted to write automated tests for their mobile apps. 

    Are You Sure the Bus Line is Listed? Gathering data using REST APIs and REST Assured:
    February 2017


    Building a Geb + Groovy + Spock project with Yeoman:
    November 2016

    New job at Good Start Genetics? New automation toolsets to learn, using Geb + Groovy + Spock. 

    Learning JavaScript: Nightwatch.js
    October 2016

    At Good Start Genetics, I joined a Node.js product team and adopted Nightwatch.js to write end-to-end tests for a Vue.js front end, pairing it with Node's PostgreSQL library to verify database state. These posts document the learning curve: navigating the overlap between vanilla JavaScript, ES6, Node.js, Mocha, and in-house libraries when reading unfamiliar production test code.


    Playing with Protractor:
    September 2016

    Demo project for a job interview writing a test framework with Protractor + JavaScript + Jasmine, the toolsets at their company.  


    RESTful API Testing with Postman and Newman:
    July 2016

    Fitbit Boston was investigating new ways to write API tests, using Postman. Article covers "What is an API?" and gives sample APIs on the web. Also shows


    Configuring Build.Gradle Environments:
    June 2016

    Experiment with the new way Fitbit Boston was writing tests, using Gradle + JUnit + Hamcrest instead of Maven + TestNG + JUnit. 


    The Builder Pattern:
    April 2016 - May 2016

    A Senior Developer at Fitbit walked me through a new way to store data, so of course I had to practice using it during my off-hours. 

    RESTful Testing with Stripe and Apache HttpComponents:
    Feb 2016 - March 2016

    Selenium WebDriver + Java + Apache HTTP Components. Experimental proof-of-concept that I demoed to stakeholders to prove to Fitbit Boston that we could add tests to our infrastructure for the Stripe API payment processor. They asked for documentation on what I was planning, so I showed them these blog posts I had just written. 


    Automate Amazon 
    Dec 2015 - Jan 2016

    How to develop a rudimentary framework to create automated tests for Amazon. Selenium WebDriver + Java + TestNG, based on work doing at Fitbit Boston. 

    Testing The-Internet
    June - July 2015

    Selenium WebDriver + Java demonstrating refactoring out common utilities such as logging and error handling, getting page titles, getting URLs, and sending keys, similar to what we were using at Fitbit Boston. Web locators stored in Page Objects. 

    Writing automated tests versus Dave Haeffner's Login page on his test site, The-Internet.