New in V7.8Log a Bug: steps, screenshot and errors in one report

Find it. Locate it. Automate it.

Generate Playwright and Selenium code in a few clicks, from any element on a page or any live API call, then check how fast that API responds. Found a bug on the way? Log it with the steps already written. No tokens to buy, nothing to install except one Chrome extension.

  • Free to try, no card
  • No AI tokens or API keys
  • Runs in your browser

Less setup, no meter running.

Automation testing is slow when every locator and every assertion is typed by hand. TestMaadu does the repetitive part and leaves the decisions to you.

  • A few clicks

    Pick an element or a request, choose what to check, copy the code. Comments in the output explain each step, so the test reads like a teammate wrote it.

  • Live API testing on any site

    Capture real calls from any site you can open in Chrome, your own staging and local apps included. Generate a test from the exact request and response you saw.

  • A quick speed check on any API

    See how long a call took, where the time went, and get a repeat-run test with a time budget. It is a basic response-time check, not a load test.

  • Bug reports that write themselves

    Press Record, recreate the bug and press End Recording. You get numbered steps, an annotated screenshot with the page URL, and the console and API errors, ready to paste into your tracker.

  • No token burn

    TestMaadu builds code from what it finds on the page and in the request, using its own rules, inside your browser. There is no AI model to pay for, no API key to paste in and no usage meter.

  • Positive and negative tests

    Get the happy path and the failures: missing or invalid parameters, missing or invalid authentication, and resources that do not exist.

  • Just a Chrome extension

    Nothing else to install or configure. Open the side panel for elements and bug reports, or Chrome DevTools for API calls and speed checks.

Point at an element. Get the locator and the code.

Find Element works on any page you can open. Click what you want to automate, review the locator, choose an action and copy ready-to-run code.

  • A locator with a reasonTestMaadu picks the strongest locator the page supports. “Why this locator?” lists the evidence it used and what was missing.
  • Two frameworks, three languagesPlaywright in TypeScript, JavaScript or Python, and Selenium in JavaScript or Python. Switch and the code updates in place.
  • Freeze & InspectHold menus, tooltips and other transient elements for 5 seconds so you can select them before they disappear.
  • Check it before you copy itVerify on the page runs the chosen action against the live element, with a test value when it needs one.
  • Related elements and dropdown optionsDrag and drop, or choose an option from a dropdown. Pick the second element or the option and TestMaadu writes the step.
TestMaaduFind Element
Selected elementVERIFIED
<button id="sign-in" type="submit">Sign in</button>
Role
button
Accessible name
Sign in
Locator strategy
getByRole

Framework

Language

Playwright · TypeScriptREADY
// Find the "Sign in" button.
const signIn = page.getByRole('button', { name: 'Sign in' });

// Click it.
await signIn.click();

// Check it is visible and enabled.
await expect(signIn).toBeVisible();
await expect(signIn).toBeEnabled();
Example output. The code depends on the element you pick.
TestMaadu API TestChrome DevTools

1. Capture: do the action in your app and the call appears here

GET
/api/productsapplication/json
200
POST
/api/ordersapplication/json
201Generate
PUT
/api/orders/8841application/json
200
TestMaaduAPI Automation

2. Choose: the kind of test and what to assert

Core assertions3Selected by default
Status is 201Expected: 201
Content type is JSONDetected: application/json
Response has an idPath: id
Response headers9Optional
cache-control existsHeader: cache-control
etag existsHeader: etag
Show 7 more
TestMaaduOutput

3. Copy: run-ready Playwright test

Playwright · Positive testREADY
test('creates an order', async ({ request }) => {
  // Send the request.
  const response = await request.post(url, {
    data: { sku: 'TM-1042', qty: 2 },
  });

  // Assert the status code.
  expect(response.status()).toBe(201);
});
Example output. Try the Negative test button above.

Capture a live API call. Get the test.

Open Chrome DevTools, go to the TestMaadu API Test panel, and use your app as usual. Each call appears as you make it. Pick one and generate a Playwright test from the real request and response.

  • Assertions you chooseStatus, content type and key body fields are on by default. Response headers and schema checks are optional. Long lists show five rows with a “Show more” button.
  • Positive and negative testsGenerate the baseline test, or pick the failure cases that apply to the request. Each one becomes its own test.
  • Secrets stay out of your codeAuthorization headers and cookies become environment-variable references by default. Replaying captured authentication is off until you turn it on.
  • Dynamic values, parameterisedIDs and tokens that change between runs are detected, and you choose which ones move to environment variables.
  • TypeScript, JavaScript or PythonReadable or compact assertions, whichever suits your suite.

How fast is that API? Check it in two clicks.

In the same DevTools panel, pick any captured call and choose Performance Testing. TestMaadu shows how long that call took and where the time went, then writes a Playwright test that repeats it and checks the response time against a budget you set.

  • A response-time snapshot, free to seeTotal time, a split into connection, server wait and download, response size, compression and caching, with plain-language hints. The snapshot stays visible even after your trial ends.
  • A repeat-run test with a budgetOne warm-up call, then 5 to 50 measured calls (20 by default). It reports min, median, p95 and max, and fails on errors or when p95 goes over your budget.
  • Safe by defaultGET is the default. For POST, PUT, PATCH and DELETE you see a warning and confirm first, because the test repeats the call and could create or change data.
  • Secrets stay out of your codeAuthorization headers become environment-variable references, the same as API tests.
  • TypeScript, JavaScript or PythonRun it in your own Playwright project, on your machine or in CI.

Not a load test. It makes one call at a time from one machine, so it answers “is this endpoint slow?”, not “can it handle 1,000 users?”.

TestMaadu API TestChrome DevTools

1. Select a captured call and pick what to do

GET
/api/products?page=1
200
TestMaaduAPI Performance

2. See the snapshot: where the time went

TestMaaduOutput

3. Copy: a repeat-run Playwright test

Playwright · TypeScriptREADY
Example output. 20 runs, p95 budget 800 ms.
TestMaaduLog a Bug

1. Record: recreate the bug and the steps write themselves

#StepTest data
1Open shop.example.com/checkout
2Enter “3” in Quantity3
3Select “Express (1-2 days)” in DeliveryExpress
4Enter “SPRING25” in Coupon codeSPRING25
5Click “Place order”
TestMaaduScreenshot editor

2. End Recording: a screenshot, ready to mark up

TestMaaduEvidence and export

3. Review the evidence, then copy or download the bug

POST
/api/ordersAfter step 5 · 842 ms
500Copy as cURL

Tokens, cookies and passwords are masked by default.

Found a bug? Log it with the steps already written.

Open the Log a Bug tab in the side panel and press Record. Recreate the bug as you normally would, then press End Recording. TestMaadu has the steps, a screenshot with the page URL, and the errors behind it, ready to paste into Jira, Azure DevOps, GitHub, Linear, Slack or an email.

  • Steps that write themselvesClicks, typing, dropdowns, uploads, new tabs and alert popups become numbered steps with the test data you used. Rename, reorder, delete or add steps before you send it.
  • A screenshot you can mark upEnd Recording captures the visible tab with a box around the last thing you clicked. Draw rectangles and arrows, add text, blur private data, crop, and keep the URL and time on the image.
  • The evidence developers ask forConsole errors, the last element you used with its locator, and the environment: browser, screen, start and captured URL, page title, time zone and app version. With lifetime access, failed API calls with a ready cURL command and slow calls too.
  • Copy it, or download the zipCopy bug pastes a formatted report, Copy screenshot pastes the image, and Download zip saves the screenshot and report. With lifetime access the zip also holds network.har, api-errors.json and console.txt.
  • Private by defaultPasswords are never read. Tokens, cookies and secret URL values are masked in everything you export unless you choose to show them, and nothing is sent to us.
Free, even after the trialSteps 1 to 5, the screenshot editor with the page URL, console errors, the element snapshot and environment details.

Capture once. Generate anywhere.

The same three steps work for an element on a page, an API call and an API speed check.

  1. Select

    Click an element on the page, or perform an action in your app and pick the API call it made. For an API call, choose Generate API Testing or Performance Testing.

  2. Review and choose

    TestMaadu shows the locator, the request or the response-time snapshot, and you choose the action, the assertions or the time budget.

  3. Generate and copy

    Get Playwright or Selenium code, or a repeat-run performance test, with comments, ready to paste into your project.

Your pages, API data and bug reports stay in your browser.

TestMaadu is built for testing real applications, so it treats what it sees as private.

  • Generated on your device

    Inspecting, locating, timing, recording bugs and writing code all happen in the extension. Pages, API requests, responses, timings, screenshots, bug reports and generated code are never sent to us or to anyone else.

  • No API data saved

    Nothing about your API calls is saved to disk or kept in local storage. The call you select sits only in temporary browser memory and is cleared when you refresh the page, close the tab or close the browser. A bug you are logging is also kept only in temporary memory, until you discard it, start a new one or close the browser.

  • Only sign-in goes online

    The only data that reaches our server is your Google sign-in and whether your trial or lifetime access is active. Read the full Privacy Policy.

Try it first. Pay once, keep it.

Full code from the first click. If you decide to keep TestMaadu, one payment unlocks it for good.

Start right away

1 day, no sign-in

Install the extension and generate full code straight away.

  • Find Element, API Automation, API Performance and Log a Bug
  • Copy enabled

Sign in with Google

3 days, no card

Keep going with a free trial. We use your Google account only to verify it.

  • Everything in the first day
  • No AI tokens or API keys

Trial lengths are the current settings and can change.

Lifetime access

One-time payment

Keep generating full code and complete bug reports, with every future update included.

  • Find Element, API Automation and API Performance
  • Log a Bug with every step, API errors, cURL and HAR
  • All further updates
  • All sales final, so try it free first. Refund Policy

After the trial, generated code is shown in part and copying is turned off until you unlock lifetime access. The API Performance snapshot stays visible, and Log a Bug keeps working with steps 1 to 5, the screenshot editor and console errors. Compare free and lifetime

Add TestMaadu to Chrome.

The extension is the whole product. It adds a side panel for elements, API tests, API performance and bug reports, and a TestMaadu API Test tab in Chrome DevTools, and it does all the work in your browser.

Works in Google Chrome 114 or newer. Free to try, no card needed.

  1. Add it from the Chrome Web StoreClick Add to Chrome, then confirm.
  2. Open it on any pageClick the TestMaadu icon to open the side panel, then choose the Find Element tab and click Select Element.
  3. Capture an API callPress Ctrl + Shift + I, open the TestMaadu API Test tab and use your app.
  4. Test it or time itSelect a call, then choose Generate API Testing or Performance Testing.
  5. Log a bugIn the side panel, open the Log a Bug tab (or right-click the page and choose Log a bug), press Record, recreate the bug and press End Recording.

Questions, answered.

Does TestMaadu use AI, and do I pay for tokens?

No. TestMaadu builds code from what it finds on the page and in the request, using its own rules, inside your browser. There is no AI model to pay for, no API key to paste in and no usage meter.

Does my page or API data leave my browser?

No. Inspected pages, API requests and responses, performance timings and generated code are never sent to us or anyone else. Only your Google sign-in and your trial or lifetime status talk to our server.

Nothing about your API calls is saved to local storage or disk. The call you select is held only in temporary browser memory and is cleared when you refresh the page, close the tab or close the browser. The Privacy Policy has the details.

What does API Performance do? Is it a load test?

No, it is a basic response-time check. The snapshot shows how long one captured call took and where the time went. The generated Playwright test makes one warm-up call, then repeats the call 5 to 50 times (20 by default), one at a time, and fails on errors or when the p95 time goes over your budget.

It runs from your own machine and cannot tell you how the API behaves under many users at once. For that you would need a dedicated load-testing tool.

Is it safe to run the performance test on a POST or DELETE call?

Be careful. The test repeats the call, so a write call can create or change data many times. GET is the default; for POST, PUT, PATCH and DELETE, TestMaadu shows a warning and asks you to confirm before it generates the code. Use a test environment for those.

What does Log a Bug record, and what ends up in the report?

While you record, TestMaadu writes a step for each click, typed value, dropdown choice, upload, drag and drop, new tab and alert popup on the tab you are recording. End Recording stops it and takes a screenshot of the visible tab, which you can mark up. You add a title, expected and actual result if you want them, and choose a severity.

The report holds the steps with their test data, the screenshot, console errors, the last element you used and the environment (browser, screen, start and captured URL, page title, time zone, language and app version). With lifetime access it also holds every step past the fifth, the failed API calls with a cURL command for each, slow calls, and a zip with network.har, api-errors.json and console.txt.

Is Log a Bug free?

Yes. During the trial you get all of it. After the trial, Log a Bug keeps working for free with steps 1 to 5, the screenshot editor with the page URL, console errors, the element snapshot and environment details, and you can still copy the bug, copy the screenshot and download the zip.

Lifetime access adds every step, API errors and slow calls, Copy as cURL, network.har and api-errors.json in the zip, and removes the “Made with TestMaadu” line from copied reports. Compare plans

Does Log a Bug send my screenshots or data anywhere?

No. The recording, screenshot and evidence stay in the extension and leave your browser only when you click Copy bug, Copy screenshot or Download zip. Passwords are never read, and tokens, cookies and secret URL values are masked in what you export unless you choose to show them.

Can I send a bug straight to Jira?

Copy bug puts a formatted report on your clipboard that you paste into the description of a Jira, Azure DevOps, GitHub or Linear issue, a Slack message or an email, then Copy screenshot adds the image. There is no direct connection to those tools yet.

Which frameworks and languages does it support?

Find Element generates Playwright code in TypeScript, JavaScript and Python, and Selenium code in JavaScript and Python. API Automation and API Performance generate Playwright tests in the same three languages.

Will it work on any website?

On any site you can open in Chrome, including your own staging and local apps. Chrome does not let extensions read a few pages, such as the Chrome Web Store and chrome:// pages, so those cannot be inspected.

Are my API secrets written into the generated code?

Not by default. Authorization headers and cookies become environment-variable references such as process.env.TESTMAADU_AUTHORIZATION. Replaying captured authentication is off until you turn it on, and you choose whether any literal value is included.

Do I need to install anything besides the extension?

No. TestMaadu is a Chrome extension. The code it generates runs in your own Playwright or Selenium project.

What happens when my trial ends?

You can still open TestMaadu, but generated code is shown only in part and copying is turned off until you unlock lifetime access. The API Performance snapshot stays visible, and Log a Bug keeps working with its free features. Your account and settings stay as they were.

Can I get a refund?

All sales are final, which is why TestMaadu is free to try first: a day without signing in, then a trial with Google sign-in. The exception is a payment error, such as a double charge or a payment that did not unlock your access. Email us within 7 days. The Refund Policy has the details.

Which browsers are supported?

Google Chrome 114 or newer, because TestMaadu uses Chrome’s side panel.