Projects & Frameworks
Test harnesses, an MCP server, live CI-driven suites, and AI-assisted automation — each with the architecture and the reasoning behind it, not just the tool list.
- UI → API → DB → Kafka → WebSocket
Multi-Layer Playwright Framework
One order verified at every layer: UI, REST/GraphQL, Postgres, Kafka, and WebSocket.
- Playwright
- TypeScript
- Docker
- PostgreSQL
- Kafka
- GraphQL
- GitHub Actions
- 154
- tests across UI, API, DB, Kafka, WebSocket, and E2E
- 34
- @smoke tests on every pull request
tests/e2e/order-flow.spec.ts@e2e @smoke/** * UI -> REST / GraphQL -> Database -> Kafka / WebSocket -> UI * One business transaction verified at every layer. */ // … await test.step('DB: order row, item row and stock', async () => { // … const stock = await db.queryOne<{ stock: number }>( 'SELECT stock FROM products WHERE id = $1', [product.id]); expect(stock!.stock).toBe(23); }); await test.step('Kafka: order.created event', async () => { const event = await listener.waitForEvent( (e) => e.value?.order?.id === orderId && e.value.eventType === 'order.created', ); expect(validate(OrderEventSchema, event.value).order.total).toBe(39.98); }); - Model Context Protocol
Portfolio MCP Server
Exposing this site's data as MCP tools any AI client can query.
- Cloudflare Workers
- MCP SDK
- TypeScript
- Zod
- 10
- MCP tools covering experience, projects, hiring info, quality metrics, and writing
- 2
- transports — remote (Streamable HTTP/SSE) and local (stdio)
src/tools.tsMCP SDKexport function registerPortfolioTools(server: McpServer) { server.registerTool( "get_experience", { title: "Get work experience", description: "Ashish Kumar's work experience history — company, role, dates, responsibilities, quantified results, and business impact for each position.", }, async () => jsonResult(await getExperience()) ); // … 6 more tools } - Live public testbed
Sauce Demo Playwright Suite
A real E2E suite against a live public store, with its report published and replayable here.
- Playwright
- TypeScript
- Allure
- GitHub Actions
- Shopify
- 25
- functional cases across catalog, cart, checkout, account, and journey
- 3
- browsers — Chromium, Firefox, WebKit, matrixed in CI
tests/journey/full-purchase-journey.spec.ts@account @journeytest.describe('Full purchase journey @account @journey', () => { test('signup, login, add to cart, checkout, and browse site pages', async ({ registerPage, loginPage, homePage, productPage, cartPage, checkoutPage, page, }) => { const user = buildDisposableUser(); await test.step('sign up as a new customer', async () => { await registerPage.goto(); await registerPage.register(user); await expect(homePage.header.logOutLink).toBeVisible(); }); // … }); }); - Built & load-hardened
Food Recommendations
A no-login food and dish recommendation board, built and load-hardened like a real product.
- Next.js
- TypeScript
- Prisma
- PostgreSQL
- Redis
- Sentry
- 30
- Playwright cases — happy path, admin, validation, a11y, SEO/errors
- Redis
- rate limiting that actually holds across serverless instances
lib/rateLimit.tsUpstash Redis// Redis-backed so limits actually hold across Vercel's ephemeral serverless // instances — the previous in-memory Map only limited requests hitting the // same warm instance, which on serverless is close to no protection at all. export async function isRateLimited(key: string, limit: number, windowMs: number): Promise<boolean> { const { success } = await getLimiter(limit, windowMs).limit(key); return !success; }
// more case studies
Frameworks, Tools & Experiments
A modular Selenium framework built to be maintained, not just to pass.
- Selenium
- Java
- TestNG
- Log4j
- Extent Reports
- GitHub Actions
REST Assured + Maven, built for automated execution and reporting from day one.
- REST Assured
- Java
- Maven
- GitHub Actions
Playwright UI & Automation Framework
AI-assistedUsing AI coding agents deliberately inside the test-authoring workflow.
- Playwright
- MCP Server
- GitHub Copilot
Screenshot to Drive
2 clicksA Chrome extension that gets a screenshot from the active tab into a shared Drive folder in two clicks.
- Chrome Extension
- JavaScript
- Google Drive API
- OAuth
// engineering rigor
Deterministic Test Design Principles
Automation suites have to be as dependable as the software they certify. These are the rules the multi-layer framework is built on.
Isolated test state
Every test creates its own data through factories or a seeding API and matches events by its own order id, with cleanup fixtures undoing setup in reverse order — so tests run in any order, in parallel.
Invariant: Order independence
Strict contract boundaries
Responses are validated against the OpenAPI spec and typed schemas at every boundary, and the GraphQL schema is snapshotted, so a contract change fails a test instead of a customer.
Invariant: Schema-validated payloads
Flakiness made visible
Retries exist in CI, but any test that passes only on retry is listed in a pull-request comment. A retry that hides a flaky test is a defect in the suite, not weather.
Invariant: No silent retries
// source inspection