“Most of my work is making release day boring. The good kind of boring.”
— how I think about the jobThe craft, up close
How the work actually looks.
// one helper · every checkout spec calls it · no copy-paste
Cypress.Commands.add('seedAndSignIn', (role: UserRole = 'returning_customer') => {
cy.task('db:reset');
cy.task('db:seed', { role, fixtures: 'checkout' });
cy.intercept('POST', '/api/auth/session').as('getSession');
cy.session(role, () => {
cy.apiLogin(role);
cy.visit('/');
cy.wait('@getSession');
});
});
Assertions split into classes, data-test selectors
centralized, state seeded via DB tasks - not the UI.
Selected work
What I get hired to fix.
A flaky suite nobody trusted, rebuilt to 700+ green tests.
A team had inherited a thin, flaky test suite everyone had learned to ignore. I rebuilt it end to end - page objects, dedicated assertion layers, centralized selectors, database-seeded state - and grew it to 700+ tests that run green every night in under two hours. Flake dropped about 60 percent, and the next hundred tests cost a fraction of the first. Their own engineers write tests now.
- Cypress
- Playwright
- TypeScript
- CI
- self-hosted
AI features shipping blind, given an evaluation layer that catches bad output before users do.
A product was shipping features on Claude and GPT with no way to know when quality slipped. I built the evaluation layer: output scored against ground truth, hallucination and prompt-injection checks, RAG grounding tests, all wired into CI so a bad prompt or a model upgrade fails the build instead of production. Built on the Anthropic and OpenAI APIs with Promptfoo and DeepEval.
- Anthropic API
- OpenAI API
- Promptfoo
- Red-teaming
- RAG
Quality owned on a live payments product, from zero process.
Brought in as the only QA on a payments product with no test process in place. I owned all of it - test strategy, manual and exploratory passes, end-to-end automation, release-readiness criteria, and the go/no-go gate. Card payments, Tap to Pay, refunds, 3DS, and transfers. Multiple critical bugs caught every release, before a single user hit them.
- Payments
- Manual + E2E
- Release management
- PCI-aware
Inbox open
Let's make your next
release boring.
Mail is the fastest way to reach me. Tell me what you are shipping and where it hurts, and I will tell you how I would test it.
Email tykhonkozachenko@gmail.comT.