I find whatbreaks beforeyour users do.

I’m a QA engineer with 1.7 years of hands-on testing across payment platforms, casino games and factory software. So far that’s 7,000+ test cases and 1,000+ defects logged, retested and closed. I work remotely with a team in Austin, from India.

Four systems I’ve taken apart

Each one had many roles, real money or real chemistry behind it, and plenty of ways to go wrong.

3,500+
test cases, 350+ defects found

AgroPack ERP

A manufacturing and quality control system for agrochemicals. I tested workflows across 7 enterprise roles: sample management, batch creation, laboratory testing, chemical inventory, production approval, COA workflows and packaging plant controls.

FunctionalRegressionEnd-to-endRBAC
1,642+
test cases, 420+ defects found

Getways

A payment and gaming transaction platform. I covered Player, Agent, Master Agent and Super Admin journeys, and validated integrations with WERT, Stripe, Coinbase, Fiserv, CLKK and PayNearMe.

PaymentsTransactionsRoles
2,000+
test cases, 200+ defects found

Vegas Empire Game Admin Portal

A social casino back office with a multi-level role hierarchy. I tested user management, game CRUD, game coins, RTP, bonus features, recharge and redeem, support tickets and chat.

Role-based accessCross-platformRTP
160+
test cases, 60+ defects found

Vegas Empire Website

The player-facing side. I played through 100+ slot games, checking gameplay and functionality as a real player would.

Game testingUI

How I think while testing

Four small pieces that show my process. The examples are illustrative, with no client data.

Sample defect report

Withdrawal is created twice when Submit is double-clicked

Severity
Critical
Priority
High
Environment
QA, Chrome on Windows
Role
Player
Steps
  1. Log in as a player with a balance of 100.
  2. Open Withdraw and enter 50.
  3. Double-click Submit quickly.
Expected
One withdrawal of 50 is created. The button locks after the first click.
Actual
Two withdrawal requests appear in history and the balance drops by 100.
Evidence
Screen recording and the duplicate API calls from the network tab.
Suggested fix
Disable the button on first click and make the endpoint reject duplicate requests.

Testing a payment flow

  1. Read the rules first: limits, fees, currencies and who is allowed to pay.
  2. Test the happy path with each payment method.
  3. Break it: declined cards, timeouts, double clicks, refreshing mid-payment, closing the tab.
  4. Check the numbers: amount, fee and balance must match on screen, in the API and in the database.
  5. Check every role sees only what it should.
  6. Automate the stable core, then re-run it after every release.
Sample test cases

Role-based access: admin panel

IDScenarioExpected resultPriority
RBAC-01Super Admin opens user managementFull list is visible with create, edit and disable optionsHigh
RBAC-02Agent opens the Super Admin URL directlyAccess is denied and the user is redirectedHigh
RBAC-03Agent views the user listOnly their own downline is shownHigh
RBAC-04Agent creates a user under another agentAction is blocked with a clear messageHigh
RBAC-05Player calls an admin API with a valid player tokenServer returns 403, no dataHigh
RBAC-06Role is changed while the user is logged inNew permissions apply after refresh or next loginMedium
RBAC-07Disabled user tries to log inLogin fails with a clear messageMedium
RBAC-08Menu items for each roleOnly permitted menu items are shownLow
Sample automation

A Playwright check

A small example of the style I use: one clear behavior per test, readable names, and checks on what the user sees.

import { test, expect } from '@playwright/test';

test('agent cannot open the super admin area', async ({ page }) => {
  // log in as an agent
  await page.goto('/login');
  await page.getByLabel('Email').fill(process.env.AGENT_EMAIL);
  await page.getByLabel('Password').fill(process.env.AGENT_PASSWORD);
  await page.getByRole('button', { name: 'Log in' }).click();

  // try the restricted page directly
  await page.goto('/admin/users');
  await expect(page).not.toHaveURL(/admin\/users/);
  await expect(page.getByText('Access denied')).toBeVisible();
});

Break my checkout

I planted four bugs in this tiny shop. Test it like a QA would and see how many you can trigger. Nothing is sent anywhere.

Test notebook, 20 each

Total20.00

Bug board

0 of 4 found

How I work

Manual first, so I understand the product. Automation after, so the boring checks run themselves.

I start by reading the requirements like a skeptic, then test every role, every calculation and every edge a user could stumble into. Once a flow is stable, I write Playwright scripts to guard it, and use Postman and JMeter to check what the screen can’t show: payloads, data accuracy and load.

Testing

Manual, functional, regression, smoke, end-to-end, cross-browser, cross-platform, database, RBAC, payment, game, load

Tools

Playwright (JavaScript), Postman, Apache JMeter, JIRA, GitHub, Plane, Microsoft Clarity, BrowserStack

Languages

JavaScript, SQL, HTML

Where I’ve worked

Junior Quality Analyst
Austin, TX, remote

  • Designed and ran test cases from business requirements and acceptance criteria.
  • Built reusable Playwright automation in JavaScript and widened coverage.
  • Tested APIs in Postman and ran load tests in JMeter.
  • Owned the defect lifecycle in JIRA, from first report to retest and closure.
  • Joined sprint triage, root-cause analysis, regression cycles and release checks.

Quality Analyst Intern
Austin, TX, remote

  • Ran functional, regression, smoke, UI and post-release tests.
  • Validated REST API responses and integrations with Postman.
  • Wrote JIRA defects with clear steps, expected and actual results, and evidence.
  • Tested across browsers and devices.

MCA, L J University

Ahmedabad, Aug 2023 to Aug 2025
CGPA 7.94

BCA, Kutch University

Bhuj, Mar 2020 to Mar 2023
CGPA 6.35

Certifications

QA Internship Certificate
Agile and Scrum Fundamentals with JIRA

Have something that needs breaking?

krishramjiyani906@gmail.com