<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Tandjiro</title>
    <description>The latest articles on DEV Community by Tandjiro (@tanjirozx77).</description>
    <link>https://dev.to/tanjirozx77</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3910848%2F472f023e-0adf-45ae-b156-852f6626a408.jpg</url>
      <title>DEV Community: Tandjiro</title>
      <link>https://dev.to/tanjirozx77</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tanjirozx77"/>
    <language>en</language>
    <item>
      <title>I Tested TestSprite on an Indonesian SaaS App — Here's What the AI Missed (and Caught)</title>
      <dc:creator>Tandjiro</dc:creator>
      <pubDate>Sun, 03 May 2026 19:39:27 +0000</pubDate>
      <link>https://dev.to/tanjirozx77/i-tested-testsprite-on-an-indonesian-saas-app-heres-what-the-ai-missed-and-caught-30jk</link>
      <guid>https://dev.to/tanjirozx77/i-tested-testsprite-on-an-indonesian-saas-app-heres-what-the-ai-missed-and-caught-30jk</guid>
      <description>&lt;p&gt;We've had the same conversation every sprint: QA flags a localization bug two days before deployment, someone hard-fixes it, and two weeks later a different locale breaks the same component. Sound familiar?&lt;/p&gt;

&lt;p&gt;I decided to run TestSprite 2.1 on one of our production-grade web apps — a B2B SaaS billing and scheduling platform serving Indonesian SMEs. The app handles IDR payments, WIB/WITA/WIT timezone display, and Bahasa Indonesia UI strings. This is exactly the kind of locale-heavy codebase that breaks testing tools not built with non-US markets in mind.&lt;/p&gt;

&lt;p&gt;Here's an honest account of what happened.&lt;/p&gt;

&lt;p&gt;Setup: Faster Than I Expected&lt;/p&gt;

&lt;p&gt;TestSprite 2.1 installs as an npm package and connects to your staging environment via a config file. I had it running against our Next.js frontend in under 15 minutes:&lt;/p&gt;

&lt;p&gt;npm install testsprite --save-dev&lt;br&gt;
npx testsprite init&lt;br&gt;
npx testsprite crawl --url &lt;a href="https://staging.yourapp.com" rel="noopener noreferrer"&gt;https://staging.yourapp.com&lt;/a&gt; --locale id-ID&lt;/p&gt;

&lt;p&gt;Within one crawling session (~18 minutes), TestSprite identified 52 unique user flows — login, invoice generation, subscription management, appointment scheduling, and payment confirmation. All automatically converted into runnable test cases, zero manual writing.&lt;/p&gt;

&lt;p&gt;TestSprite 2.1's new AI engine is noticeably faster than previous versions. Our full test suite ran in about 6 minutes. For context, our old Playwright setup takes 22 minutes for the same coverage.&lt;/p&gt;

&lt;p&gt;Locale Observation #1: IDR Currency Parsing Is Broken Out of the Box&lt;/p&gt;

&lt;p&gt;This is the most critical issue for any developer building fintech or e-commerce apps in Indonesia.&lt;/p&gt;

&lt;p&gt;The Indonesian Rupiah format: Rp 1.500.000 (period = thousands separator, no decimals)What TestSprite parsed it as: 1.5 (treating the period as a decimal point)&lt;/p&gt;

&lt;p&gt;When TestSprite crawled our invoice page, it extracted Rp 1.500.000 from the DOM and created assertions based on the value 1.5. Every price-related test then failed — not because our app was broken, but because TestSprite's number parser assumes the US convention (comma = thousands, period = decimal).&lt;/p&gt;

&lt;p&gt;The downstream effect: our checkout flow tests showed 100% failure rate on first run. It looked catastrophic. In reality, the app was working perfectly.&lt;/p&gt;

&lt;p&gt;Root cause: TestSprite defaults to en-US number parsing unless you explicitly configure locale. The locale flag in the CLI changes display locale but doesn't fully propagate to the value extraction layer — at least in our testing.&lt;/p&gt;

&lt;p&gt;Workaround that worked for us:&lt;/p&gt;

&lt;p&gt;// testsprite.config.js&lt;br&gt;
module.exports = {&lt;br&gt;
  locale: 'id-ID',&lt;br&gt;
  numberFormat: {&lt;br&gt;
    thousandsSeparator: '.',&lt;br&gt;
    decimalSeparator: ',',&lt;br&gt;
    currencySymbol: 'Rp',&lt;br&gt;
    currencyPosition: 'prefix'&lt;br&gt;
  }&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;After adding this, price assertions became accurate. But this config option is not documented in the main quickstart guide — I found it buried in a GitHub issue. For Indonesian developers, this is a must-know before your first run.&lt;/p&gt;

&lt;p&gt;Locale Observation #2: Timezone Ambiguity — WIB, WITA, WIT&lt;/p&gt;

&lt;p&gt;Indonesia spans three time zones: WIB (UTC+7), WITA (UTC+8), and WIT (UTC+9). Our scheduling app shows appointment times localized to each user's timezone, with the abbreviation displayed next to the time.&lt;/p&gt;

&lt;p&gt;TestSprite flagged every single timezone label as a failed assertion. Why? It couldn't recognize WIB, WITA, or WIT as valid timezone identifiers. It expected IANA-standard zone names like Asia/Jakarta or UTC offset notation like +07:00.&lt;/p&gt;

&lt;p&gt;Example failure:&lt;/p&gt;

&lt;p&gt;Expected: "14:30 WIB"&lt;br&gt;
Received: "14:30 WIB"&lt;br&gt;&lt;br&gt;
Status: FAIL — unrecognized timezone identifier&lt;/p&gt;

&lt;p&gt;Yes — the strings were identical, but TestSprite's timezone validator rejected WIB as unknown.&lt;/p&gt;

&lt;p&gt;This is a real gap. Regional timezone abbreviations like WIB, IST (India), or PST (Philippines Standard Time) are widely used in local UIs but not recognized by most IANA-based validators. For Indonesian apps, this generates a flood of false-positive failures that you have to manually whitelist.&lt;/p&gt;

&lt;p&gt;Fix: We added a custom timezone alias map in config and switched our UI to display 07:00 WIB (UTC+7) format — which also improved clarity for our users.&lt;br&gt;
What TestSprite Got Right: Non-ASCII &amp;amp; Bahasa Indonesia Text&lt;/p&gt;

&lt;p&gt;On the positive side, TestSprite handled Bahasa Indonesia strings extremely well. Our UI includes characters like é (in proper nouns), ñ (for some partner brand names), and Indonesian-specific punctuation patterns. TestSprite generated correct assertions for all of these without encoding issues.&lt;/p&gt;

&lt;p&gt;It also caught 4 hardcoded Indonesian strings that should have been externalized to our i18n config but were left as raw text in JSX components — something our own code review had missed. These would've broken our planned English-language version of the app.&lt;/p&gt;

&lt;p&gt;The Verdict&lt;/p&gt;

&lt;p&gt;Aspect&lt;/p&gt;

&lt;p&gt;Rating&lt;/p&gt;

&lt;p&gt;Setup speed&lt;/p&gt;

&lt;p&gt;⭐️⭐️⭐️⭐️⭐️&lt;/p&gt;

&lt;p&gt;Test generation quality&lt;/p&gt;

&lt;p&gt;⭐️⭐️⭐️⭐️&lt;/p&gt;

&lt;p&gt;IDR currency handling (default)&lt;/p&gt;

&lt;p&gt;⭐️⭐️&lt;/p&gt;

&lt;p&gt;Timezone support for non-IANA abbreviations&lt;/p&gt;

&lt;p&gt;⭐️⭐️&lt;/p&gt;

&lt;p&gt;Non-ASCII / Bahasa Indonesia text&lt;/p&gt;

&lt;p&gt;⭐️⭐️⭐️⭐️⭐️&lt;/p&gt;

&lt;p&gt;CI/CD integration&lt;/p&gt;

&lt;p&gt;⭐️⭐️⭐️⭐️&lt;/p&gt;

&lt;p&gt;Documentation for non-US locales&lt;/p&gt;

&lt;p&gt;⭐️⭐️⭐️&lt;/p&gt;

&lt;p&gt;Overall: 7.5/10 for Indonesian-market apps.&lt;/p&gt;

&lt;p&gt;TestSprite 2.1 is a genuinely powerful tool. The AI-generated test coverage is impressive, and the self-healing test engine (which auto-updates tests when your UI changes) alone is worth the price for teams tired of maintaining brittle Playwright suites.&lt;/p&gt;

&lt;p&gt;But if you're building for Indonesia — or any market outside the US/EU mainstream — plan for an extra half-day of locale configuration work before your first real test run. The defaults will mislead you.&lt;/p&gt;

&lt;p&gt;Once configured correctly, though, it caught bugs we'd have missed for months. The IDR parsing issue it surfaced (after we understood the false positives) revealed an actual bug in how we handled rounding for installment payments. That alone saved us from a nasty production incident.&lt;/p&gt;

&lt;p&gt;Stack: Next.js 14, TypeScript, Prisma, deployed on VercelTestSprite version: 2.1Locales tested: id-ID, en-USTest runtime: ~6 minutes (52 user flows)&lt;/p&gt;

&lt;p&gt;💡 TL;DR for Indonesian devs: Add explicit numberFormat config for IDR before your first crawl. Don't let the false positives on currency tests scare you off — the tool is solid once tuned.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>testing</category>
      <category>qa</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
