This is my small corner of the internet where Arun puts together notes and tutorials — written in plain language, for anyone curious about QA.
Tutorials on manual testing, Playwright automation, TypeScript, AI tools, and more. Start from the beginning or jump to whatever interests you.
Start with Manual Testing — the foundation of all QA. Then move to automation, AI tools, and more. Each topic is explained simply first, then technically.
Before a new car reaches the showroom, a trained person sits inside it, drives it, presses every button, checks every light, and confirms everything works as expected. No machine replaces this step completely.
Manual testing is exactly that — a trained tester uses the software by hand, just like a real user would, and checks that everything works correctly. All automation comes after you first understand manual testing well.
Manual testing is the process of manually executing test cases without automation tools. A tester plays the role of an end user and tests the software to identify any bugs or defects.
A test case is a set of conditions or steps used to determine whether a feature works correctly.
A good bug report helps developers understand, reproduce, and fix defects quickly.
The Software Testing Life Cycle (STLC) defines the ordered steps involved in testing a software application.
In Agile, testing is continuous and happens within each sprint cycle alongside development.
Start manual. Automate what is repetitive and stable.
API testing validates the communication between different software systems — making sure data is correctly sent and received behind the scenes, independent of the user interface.
API (Application Programming Interface) is a contract that allows two applications to communicate. It defines the rules for how requests and responses are structured.
Postman is the most popular GUI tool for API testing.
Most modern APIs return JSON. Key things to validate:
Browser DevTools are a powerful set of debugging tools built directly into every modern browser. Every QA tester should master DevTools to inspect elements, monitor network requests, and debug issues.
DevTools are built into Chrome, Firefox, and Edge. Open with F12 or Ctrl+Shift+I.
Playwright is a powerful automation framework by Microsoft for end-to-end testing. It controls Chromium, Firefox, and WebKit — all with a single API. Auto-waits by default, making tests far less flaky.
@playwright/testnpm init playwright@latest
npx playwright install
npx playwright test
The wizard creates project structure with config, example tests, and browser binaries.
page.getByRole('button', { name: 'Submit' })
page.getByText('Welcome, Arun')
page.getByLabel('Username')
page.getByPlaceholder('Enter email')
page.getByTestId('submit-button')
page.locator('#login-btn')
Prefer role and label locators — they are resilient and accessible.
await page.goto('https://example.com');
await page.getByLabel('Username').fill('admin');
await page.getByLabel('Password').fill('secret');
await page.getByRole('button', { name: 'Login' }).click();
await page.waitForURL('**/dashboard');
await expect(page).toHaveTitle('Dashboard');
await expect(page.getByText('Welcome')).toBeVisible();
await expect(page.getByRole('button')).toBeEnabled();
await expect(page.getByTestId('alert')).toHaveText('Success!');
await expect(page).toHaveURL(/dashboard/);
POM creates a class per page, separating locators and actions from test logic:
class LoginPage {
constructor(private page: Page) {}
usernameInput = this.page.getByLabel('Username');
async login(user: string, pass: string) {
await this.usernameInput.fill(user);
await this.page.getByLabel('Password').fill(pass);
await this.page.getByRole('button',{name:'Login'}).click();
}
}
test.beforeEach(async ({ page }) => {
await page.goto('https://example.com/login');
});
test.afterAll(async () => {
// cleanup after all tests in this file
});
const response = await request.get('/api/users');
expect(response.status()).toBe(200);
const body = await response.json();
expect(body.users).toHaveLength(10);
Configure in playwright.config.ts:
use: {
screenshot: 'only-on-failure',
video: 'retain-on-failure',
trace: 'on-first-retry'
}
View traces: npx playwright show-trace trace.zip
npx playwright show-reportretries: 2 in configTypeScript adds static typing to JavaScript, making your test code more reliable, easier to understand, and less prone to runtime errors. It is Playwright's native and recommended language.
const name: string = 'Arun';
const age: number = 30;
const isActive: boolean = true;
const scores: number[] = [95, 87, 92];
const status: 'pass' | 'fail' = 'pass';
let data: string | null = null;
interface User {
id: number;
name: string;
email: string;
role?: string; // optional field
}
type TestStatus = 'pass' | 'fail' | 'skip';
function login(username: string, password: string): boolean {
return username === 'admin' && password === 'secret';
}
const fetchUser = async (id: number): Promise<User> => {
return await api.get(`/users/${id}`);
};
class LoginPage {
readonly page: Page;
readonly username: Locator;
readonly password: Locator;
constructor(page: Page) {
this.page = page;
this.username = page.getByLabel('Username');
this.password = page.getByLabel('Password');
}
async login(u: string, p: string): Promise<void> {
await this.username.fill(u);
await this.password.fill(p);
await this.page.getByRole('button',{name:'Login'}).click();
}
}
function getFirst<T>(arr: T[]): T {
return arr[0];
}
// TypeScript infers T = number:
const first = getFirst([1, 2, 3]); // type: number
AI tools like Claude and ChatGPT can help write test cases, find errors faster, and create reports — saving hours of manual work. Like having a very studious colleague who helps prepare in seconds!
Good prompts get better results. For QA tasks, be specific about:
Example prompt:
"Write test cases for a login form with username and password. Include positive, negative, and boundary tests. Format as a table with columns: ID, Title, Steps, Expected Result."
ChatGPT will generate a comprehensive test suite in seconds.
Claude excels at understanding long context and generating detailed QA artifacts:
Microsoft Copilot integrates AI across Microsoft 365 and VS Code — boosting QA productivity in documentation, test scripting, and communication.
Microsoft Copilot is AI assistance integrated across Microsoft products — Teams, Word, Excel, Outlook, and VS Code.
Claude is an AI assistant by Anthropic, known for detailed, nuanced, and context-aware responses — making it excellent for QA documentation, test strategy, and code review.
Claude (claude.ai) is developed by Anthropic with a focus on being helpful, harmless, and honest. It handles very long documents well.
Share your requirements document with Claude and ask it to create a comprehensive test plan including scope, approach, test scenarios, risks, and exit criteria.
Claude can process the full document and produce a structured, professional test plan in seconds.
Paste your HTML or describe the UI, then ask Claude to write a Playwright test. Claude understands Playwright's API deeply and writes realistic, working test scripts.
Model Context Protocol (MCP) is an open standard that enables AI models to connect with external tools and data sources — extending AI capabilities for QA automation workflows.
MCP (Model Context Protocol) is an open standard developed by Anthropic for connecting AI assistants to external tools, databases, and APIs in a standardized way.
QA Tester · Playwright · TypeScript · API Testing · Gen AI
Passionate about quality assurance and making testing simple to understand. I believe every tester should start with strong manual testing fundamentals before diving into automation.
This site is my effort to share what I've learned — explained simply, with real examples and plain language. Whether you're just starting out or brushing up on modern tools, there's something here for you.
📧 Get in touchControls a website automatically — clicks buttons, fills forms, and checks results without human involvement.
Testing communication between software systems — ensuring data is correctly sent and received behind the scenes.
Using Claude, ChatGPT, and GitHub Copilot to write test cases, generate scripts, and create reports faster.
Writing clear, detailed reports when something doesn't work — with exact steps, evidence, and expected behaviour.
A strongly typed language built on JavaScript — making automation code safer, more readable, and maintainable.
Inspecting elements, monitoring network requests, debugging JavaScript, and testing responsive designs in the browser.
All content on this site is free and open to everyone. Share with anyone curious about QA testing.
📧 Write to Me