AI Tester Blueprint 4x
12 classesThe 4x batch and the AI Tester group run together, so their classes are listed as one track.
Rebuilding the naive RAG in Langflow, choosing a vector database, and the MCP certification plan
AI Tester Blueprint 4x notes: the naive RAG rebuilt in Langflow, local versus cloud hosting, vector database and free embedding options, the component flow, and the MCP plan.
Sat 26 Sep · 2h 0mBuilding a naive RAG in n8n and Pinecone, and the chunking bug that split test cases in half
AI Tester Blueprint 4x notes: a naive RAG over 100 test cases in n8n and Pinecone, embeddings, chunk size and overlap, and fixing a chunking bug with a CSV cleaning step.
Sat 19 Sep · 1h 48mWhat RAG is, the two phases it runs in, and the RAG Explorer
AI Tester Blueprint 4x notes on RAG for QA: the three limits of a language model, fine-tuning versus RAG, the ingestion phase, the retrieval augmentation and generation phase, vector databases and embeddings, and a Langflow RAG pipeline over 500 test cases.
Sat 12 Sep · 2h 1mA bug triage agent on a canvas, then the same flow behind curl, Postman and a React page
AI Tester Blueprint 4x notes on Langflow: build a bug triage agent, fetch a Jira issue over REST with base64 basic auth, parse the response into a prompt template, make the ticket key dynamic, and call the finished flow from curl, Postman, Claude Code or a React UI.
Sun 6 Sep · 1h 51mA screenshot goes in, a Jira bug comes out
Build a screenshot to bug reporter in n8n: form trigger, base64 conversion, a Groq vision model, a Jira ticket with the screenshot attached. Debug rate limits, a bad model id and an expired Jira token live, publish a production webhook, front it with a Vercel UI through a serverless proxy, then install Langflow and build a first flow.
Sat 5 Sep · 2h 3mBuilding an agent live, and the four times it broke
Building an n8n content agent end to end: the trigger, action, result framing, structured JSON output from an AI agent node, Pin Data to save quota, the Gemini image API through an HTTP Request node, and a Telegram human-in-the-loop approval before anything is published.
Sun 30 Aug · 1h 55mRunning n8n on your own machine, and the six agents built on it
Install n8n locally with npm and run it against Ollama for a free setup, then build six QA agents: Jira fetch and create, a local test case generator, bug triage to Google Sheets, RCA, and a social media poster.
Sat 29 Aug · 2hBLAST, and the first agent that runs without you
The BLAST framework for building trackable AI agents, phase by phase, plus an n8n introduction: TAR, the two Jira agents built live, choosing a model, what it costs, and the rule about company laptops.
Sun 23 Aug · 1h 52mBranding for testers: the profile, and the content engine behind it
LinkedIn branding for QA engineers: how to edit your profile without alerting your employer, what recruiters actually search, the Hook-Story-Offer post structure, building a content brain and a reusable brand voice, and a 60-day posting challenge.
Sat 22 Aug · 1h 53mOne resume per job: beating the ATS with AI
Tailor your QA resume to each job description with AI: how applicant tracking systems filter, the five things they score, the resume structure that works, and a repeatable skill that turns a job description into a matched resume.
Sun 9 Aug · 2h 07mLocal LLMs for QA, and building a Jira test case generator
Run local LLMs for QA with Ollama and LM Studio: open-source vs cloud models, and vibe-coding a Jira-connected test case generator with a Groq fallback.
Sat 8 Aug · 2h 21mPrompt engineering for QA: the RICEPOT framework
Prompt engineering for QA testers: the RICEPOT framework, CRAIP, RACE and COAST alternatives, zero-shot vs few-shot, and ready-to-use QA prompt templates.
AI Tester Blueprint 3x
10 classesThe 3x batch track: Python fundamentals through to the AI frameworks.
The end-to-end QA co-pilot, and what an agentic run costs
AI Tester Blueprint 3x notes: a LangChain QA co-pilot that fetches a Jira ticket, retrieves similar test cases from a local RAG, plans, executes in Chromium and reports to Slack, plus cost per agentic run and when to choose LangChain over Crew.ai.
Sat 12 Sep · 1h 47mBricks, a home and the neighbourhood aunty, then an agent that drives a real browser
AI Tester Blueprint 3x notes on LangChain with Python: LangChain versus LangGraph versus LangSmith, create_agent with Groq and Gemini, system prompts, parallel calls with asyncio.gather, custom tools, Pydantic structured output, and a Playwright orchestrator agent.
Sun 6 Sep · 2h 11mFrom one passing test to a framework that scores 25 metrics
Build a DeepEval framework end to end: golden datasets for a chatbot and a RAG, an independent judge model on Groq, 25 metric specifications covering quality, safety, retrieval and security, a dashboard with token accounting, and the settled answer on which direction a hallucination score points.
Sat 5 Sep · 1h 35mThresholds, and why every DeepEval score points the same way
LLM evaluation with DeepEval: why evaluation is needed at all, thresholds as acceptance criteria, why every metric scores the good direction so the threshold is always a floor, mapping DeepEval vocabulary onto ordinary QA terms, environment setup, using Groq as the judge model, and a first answer relevancy test case.
Sun 30 Aug · 1h 22mAI is not tested, it is evaluated
Why LLM systems are evaluated rather than tested, the vocabulary of LLM evaluation, DeepEval versus Ragas, thresholds and LLM-as-judge, and where red teaming fits.
Sat 29 Aug · 1h 30mThree agents for the meeting nobody wants to attend
Building a CrewAI bug triage crew for QA: three agents for classification, root cause and test recommendations, Jira as a tool, sequential process, provider fallback, and the one agent one task rule.
Sun 23 Aug · 1h 37mFinishing Python, and building your first CrewAI agent
Finish Python and build your first CrewAI agent, with the full pytest and CrewAI reference on the same page: fixtures, parametrize, markers and the flags worth knowing, agent, task and crew fields, sequential versus hierarchical, the model-provider table, and how to actually connect Groq.
Sat 22 Aug · 1h 30mFinishing Python: polymorphism, abstraction, statics and exceptions
Python OOP for AI and QA work: why Python has no method overloading, how overriding differs, abstraction with ABC and abstractmethod, static versus instance attributes, and try/except/else/finally including the else clause Java does not have.
Sun 9 Aug · 1h 26mPython OOP: constructors, encapsulation, and the five kinds of inheritance
Python OOP class notes for testers: __init__ constructors, self, encapsulation with public, protected and private, five inheritance types, and MRO explained.
Sat 8 Aug · 1h 36mPython sets, dictionaries, map and filter, and the start of OOP
Python sets and dictionaries for SDET interviews: set operations, map vs filter, dict.get counting tricks, zip, and the start of classes and objects.
Playwright 4x
3 classesThe Playwright 4x batch: ninety days of JavaScript, TypeScript, Playwright and AI, from the 28 September kickoff.
Prompt engineering for QA: five principles, zero-shot and few-shot prompts, the RICE-POT framework, and a first push to GitHub
Playwright 4x notes: prompt engineering for QA, five principles, zero-shot and few-shot prompting, the RICE-POT framework and template, and pushing to GitHub.
Wed 30 Sep · 1h 22mAI engineering, how LLMs use tokens and parameters, the core AI glossary, and anti-hallucination rules
Playwright 4x notes: AI engineering vs machine learning, LLM tokens and parameters, Ollama, the core AI glossary, RAG, and anti-hallucination rules for QA.
Mon 28 Sep · 1h 9mBatch kickoff: the 90-day roadmap, where everything lives, and the day-one setup tasks
Playwright 4x kickoff notes: the 90-day roadmap, the progress dashboard, SDET Club, notes and recordings, the three repositories, the AI tool policy and the day-one tasks.
Playwright 3x
20 classesThe Playwright 3x batch, running on its own weekday schedule.
Keyboard presses, hover, drag and drop, right-click menus, and JavaScript alerts with page.once() and page.on()
Playwright 3x notes: keyboard presses, hover, dragTo and a boundingBox mouse drag, right-click menus, and JavaScript alerts with page.once and page.on.
Tue 29 Sep · 1h 6mNative, custom and async dropdowns, and iframes, framesets and nested frames with frameLocator()
Playwright 3x notes: selectOption for native dropdowns, getByRole for custom and async menus, and frameLocator for iframes, framesets and nested frames.
Sat 26 Sep · 1h 0mlocator.filter(), the :has() pseudo-class, and searching a paginated web table
Playwright 3x notes: locator.filter() with hasText and has, the CSS :has() pseudo-class for table rows, searching a paginated table, and a reusable findRowByName.
Thu 24 Sep · 1h 10mMultiple elements, the three text getters, and web tables with dynamic XPath
Playwright 3x class notes: all versus allInnerTexts versus allTextContents, strict mode and first, web table anatomy, dynamic XPath with nested loops, and following-sibling.
Sat 19 Sep · 1h 6mCSS selectors, the three run modes, and getByRole
Playwright 3x class notes: the CSS selector cheat sheet, UI mode versus debug mode versus headless, the locator priority ladder, ARIA roles, and getByRole with the accessible name, including why name is not the HTML name attribute and what exact true changes.
Thu 17 Sep · 1h 8mXPath, strict mode, and locators for elements that change
Playwright 3x class notes on XPath: absolute versus relative, the locator confidence ranking, contains starts-with and normalize-space, handling dynamic ids, XPath axes for web tables, and Playwright strict mode with first, last and nth.
Sat 12 Sep · 1h 3mFive annotations, one grouping keyword, and the start of finding elements
Playwright 3x class notes: the full course roadmap, browser context page recap with three roles, browser context options including mobile emulation, test.skip, only, fail, fixme and slow, test.describe grouping with the -g flag, and an introduction to the two locator strategies.
Thu 10 Sep · 1h 18mHow a Playwright command reaches the browser, and why that beats one HTTP request per step
Playwright 3x class notes on architecture: Selenium's stateless W3C requests vs Playwright's persistent WebSocket, JSON-RPC, CDP vs Playwright protocol (CDP+), why Chromium is the default, channel and Chrome for Testing, and browser, context and page.
Tue 8 Sep · 1h 10mWhy Playwright, what npm init gives you, and a test you recorded instead of wrote
Playwright 3x kickoff notes: why teams moved from Selenium, rendering engines versus real browsers, Playwright's real limitations, npm init playwright@latest and what it creates, headless versus headed, the Playwright CLI, and recording a first test with Codegen.
Sat 5 Sep · 1h 1mEnums, generics and access modifiers, and which of the three survives compilation
TypeScript enums, generics and access modifiers for test automation: named constants for statuses and environments, generic functions and classes, why T beats any, public against private against protected in a page object model, readonly, and abstract classes.
Wed 3 Sep · 1h 19mAbstraction, interfaces, and the readonly that does not actually lock anything
TypeScript abstraction and interfaces for test automation: how abstraction differs from encapsulation, interfaces as contracts, readonly and optional fields, methods in interfaces, interface extends interface against class implements interface, and why interfaces vanish at compile time.
Tue 1 Sep · 1h 6mPolymorphism, and the TypeScript setup that breaks on a fresh install
JavaScript inheritance types and polymorphism for test automation, then the start of TypeScript: which inheritance shapes JavaScript allows, mixins, method overriding and dispatch, type annotations, void, never, any and unknown, and how to actually run a .ts file.
Sat 29 Aug · 1h 3mEncapsulation, inheritance, and the super that quietly returns undefined
JavaScript encapsulation and inheritance for test automation: private fields with getters and setters, controlled writes, static private counters, the five inheritance shapes, super for constructors and methods, and method overriding.
Thu 27 Aug · 1h 6mConstructors, private fields, and the one keyword to avoid in Playwright
JavaScript constructors, this, private hash fields and static explained for test automation, with the verified reason to avoid static in Playwright page objects: static state lives per worker process, so counters silently under-report.
Tue 25 Aug · 1h 15mExport, import, and the class that replaces fifty exports
ES modules and classes for test automation: named versus default exports, alias imports, why import star is a bad habit, and why a class beats fifty exports. Plus what new actually does, private hash fields, object references, and the move from JavaScript to TypeScript.
Sat 22 Aug · 1h 5mTwo rules for async/await, and what happens when you forget one
Async and await in Playwright with two mechanical rules, plus the event loop that explains flaky tests, why promises beat setTimeout, try/catch/finally, a retry loop, and three outdated habits including the deprecated waitForNavigation.
Thu 13 Aug · 1h 32mCallbacks, promises, and async/await: why Playwright needs all three
Callbacks, promises and async/await for Playwright testers: callback hell, the three promise states, then, catch, finally, Promise.all, allSettled, race, and why Playwright is asynchronous.
Tue 11 Aug · 1h 23mJavaScript 2D arrays and the star patterns interviews love
JavaScript 2D arrays and star pattern programs for SDET interviews: nested loops, process.stdout.write, triangles and the pyramid with full trace tables.
Sat 8 Aug · 1h 03mJavaScript strings, objects, and call by reference
JavaScript string methods for SDET interviews: slice vs substring, immutability, reversing a string with a loop, objects vs JSON, and call by value vs reference.
Thu 6 Aug · 1h 26mClosures: the variable that outlives its function
JavaScript closures explained for automation testers: hoisting and TDZ recap, function versus block scope, and three closure examples (makeCounter, retry limiter, rate limiter) with the exact output each one prints.
Playwright 2x
13 classesThe Playwright 2x batch, running on its own weekday schedule.
A gatekeeper for a framework everyone is now writing with AI
Playwright 2x class notes on quality gates: ESLint 9 flat config with type-aware rules for a Playwright suite, lint and typecheck scripts, and four agent-readable gates (AI slop, ponytail, over-engineering, framework patterns) that block a pull request built by Copilot, Claude or Cursor.
Fri 11 Sep · 1h 8mAn AI layer for the framework: one LLM client, one factory, four agents, no test that trusts the model
Playwright 2x class notes: add an AI layer to a Playwright framework with one LLM client for DeepSeek, OpenRouter, Groq, OpenAI and Claude, an agent factory with schema validation and one retry, an AI data generator, RCA and flaky agents in the reporter, and self-healing locators.
Wed 9 Sep · 1h 13mThe shape check that runs before every assertion, and how many workers your laptop can really take
Add JSON schema validation to a Playwright API framework with Ajv: what a schema checks, the strict create-booking schema, a shared validator, the API test order (ping, schema, CRUD, end to end), trimming AI-generated code with Ponytail, and a measured guide to Playwright workers, RAM and sharding.
Mon 7 Sep · 1h 17mThree layers, and a spec that is only assertions
Refactor a Playwright API suite into three layers: an ApiHelper that builds URLs and calls the API, a BookingApi service object and a fixture that supplies the token, and specs that only assert. Includes managed token renewal on 403, negative tests, and a JSONPath cheat sheet with jsonpath-plus.
Fri 4 Sep · 1h 2mCRUD end to end, and why the failure is 403 and not 401
Automating a full CRUD flow in Playwright: auth token, create booking, update booking, with typed interfaces, test.step and shared flow state, the Cookie header for authorization, request.newContext for a second base URL, and the arrange-act-assert refactor that follows.
Wed 2 Sep · 1h 9mAPI testing starts here, and the status codes that will fail your first assertion
Playwright API testing for the 2x batch: the three-layer architecture, URL anatomy, HTTP methods and status families, why Playwright beats Postman and Rest Assured for automation, the request fixture and APIRequestContext, and the config change that makes API tests run.
Fri 28 Aug · 1h 00mAdding one feature with AI, without becoming a blind AI user
Add dotenv support to a Playwright framework using an AI coding agent properly: plan mode first, review and push back on the plan, check the blast radius before touching shared files, catch the gitignored .env that breaks CI, approve file by file, then prove the values are really being injected.
Wed 26 Aug · 1h 13mFixtures: handing every test a page that is already logged in
Playwright custom fixtures explained: fixtures versus hooks, the built-in page, context, browser and request fixtures, building test-base.ts with test.extend, what use() does, environment-variable credentials, a visualStep wrapper for per-step screenshots, and the trace viewer.
Mon 24 Aug · 1h 15mThe build plan: how to rebuild the whole framework from an empty folder
The seven-phase plan for rebuilding an advanced Playwright TypeScript framework from an empty folder: project structure, config and environments, utilities, page objects, specs, reporting and quality gates, CI and AI rules, plus the interview answers from the class and a verified audit of what the repo contains today.
Wed 12 Aug · 1h 33mFilling the framework: BasePage, utilities, and the logger
Build a Playwright TypeScript framework: abstract BasePage, a Flex string-or-Locator utility wrapper, Faker data generator, Winston logger with scope tags, and the first passing login spec.
Mon 10 Aug · 58mBuilding the advanced Playwright framework: fixtures, structure, and config
Build an advanced Playwright framework: custom fixtures with storage state, folder structure, playwright.config retries, and env-based baseURL switching.
Fri 7 Aug · 1h 29mDynamic data with Faker, and the page object model
Faker JS and the Page Object Model in Playwright: generate realistic dynamic test data, build a LoginPage class with readonly locators and a constructor, and chain locator fallbacks with .or().
Wed 5 Aug · 49mOne test, many rows: data-driven testing in Playwright
Data-driven testing in Playwright: load JSON test data with import or fs, write JSON back with JSON.stringify, generate one test per row with template literal titles, and build a CSV reader from scratch before switching to ExcelJS and JS-YAML.
No class matches that. Try a single word, such as frame or rag.