<?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: Miftah Eto</title>
    <description>The latest articles on DEV Community by Miftah Eto (@miftah_eto_328).</description>
    <link>https://dev.to/miftah_eto_328</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%2F3907626%2Fa5c10971-0191-4e3f-b9fc-29f4a2c3f34c.jpg</url>
      <title>DEV Community: Miftah Eto</title>
      <link>https://dev.to/miftah_eto_328</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/miftah_eto_328"/>
    <language>en</language>
    <item>
      <title>10 Small Businesses Killing It on X (Twitter) — Curated Research Report</title>
      <dc:creator>Miftah Eto</dc:creator>
      <pubDate>Fri, 08 May 2026 17:56:44 +0000</pubDate>
      <link>https://dev.to/miftah_eto_328/10-small-businesses-killing-it-on-x-twitter-curated-research-report-2m6h</link>
      <guid>https://dev.to/miftah_eto_328/10-small-businesses-killing-it-on-x-twitter-curated-research-report-2m6h</guid>
      <description>&lt;h1&gt;
  
  
  10 Small Businesses Killing It on X (Twitter) — Curated Research Report
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Submitted by:&lt;/strong&gt; Terra Alliance&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Research date:&lt;/strong&gt; May 2026&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Methodology:&lt;/strong&gt; Direct profile verification via X. Each handle confirmed active, follower counts recorded at time of research. Focus on owner-operated or founder-led businesses with genuine community engagement — not just broadcast accounts.&lt;/p&gt;




&lt;h2&gt;
  
  
  The List
&lt;/h2&gt;




&lt;h3&gt;
  
  
  1. @brattybatshop — Bratty Bat Jewellery
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Niche:&lt;/strong&gt; Handmade jewellery (funky, alternative aesthetic)&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Followers:&lt;/strong&gt; ~5,087&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Location:&lt;/strong&gt; Bury St Edmunds, Suffolk, UK&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Founded:&lt;/strong&gt; 2020&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Why They Stand Out:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Over 124,000 posts — this is not a brand account, it's a person. Founder runs the X account as a genuine community presence: market updates, product drops, personal commentary. Built 5K+ followers entirely through organic posting. Est. 2020 during COVID — X was the primary growth channel. Proof that handmade craft businesses can build real audiences without ad spend.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. @DeathWishCoffee — Death Wish Coffee Co.
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Niche:&lt;/strong&gt; Bold/dark roast specialty coffee ("World's Strongest Coffee")&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Followers:&lt;/strong&gt; 105,100&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Location:&lt;/strong&gt; Saratoga Springs, NY&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Founded:&lt;/strong&gt; 2012&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Why They Stand Out:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Started as a single coffee shop, went national via Shopify + social media. X account has 35,000+ posts — one of the most active small-biz accounts on the platform. Voice is irreverent, personality-driven, community-responsive. Frequently engages with fans directly, not just broadcasts. The brand identity ("Live With A Death Wish") is executed consistently across every tweet.&lt;/p&gt;




&lt;h3&gt;
  
  
  3. @Beardbrand — Beardbrand
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Niche:&lt;/strong&gt; Men's grooming / fragrance (beard care turned lifestyle brand)&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Followers:&lt;/strong&gt; 17,000&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Location:&lt;/strong&gt; Austin, TX&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Founded:&lt;/strong&gt; 2012&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Why They Stand Out:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Famous for building an entire grooming category on the back of content. Founder Eric Bandholz started by posting on Reddit and X before the company had revenue. Today Beardbrand describes itself as "a fragrance house disguised as a beard care company" — X presence reflects this brand evolution. 17K followers, but quality of engagement and brand storytelling is textbook small-business done right.&lt;/p&gt;




&lt;h3&gt;
  
  
  4. @ugmonk — Ugmonk (Jeff Sheldon)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Niche:&lt;/strong&gt; Minimalist productivity tools / premium stationery / apparel&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Followers:&lt;/strong&gt; 28,200&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Location:&lt;/strong&gt; Downingtown, PA&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Founded:&lt;/strong&gt; 2008&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Why They Stand Out:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Founder Jeff Sheldon posts under the brand handle — 28K followers built over 15 years by sharing design process, business lessons, and product development openly. Creator of the Analog productivity card system. One of the original "build in public" small businesses on Twitter before it was a trend. Account description: "Founder &amp;amp; Designer of Ugmonk | I design analog tools to help you think better."&lt;/p&gt;




&lt;h3&gt;
  
  
  5. @FieldNotesBrand — Field Notes®
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Niche:&lt;/strong&gt; Made-in-USA notebooks and stationery&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Followers:&lt;/strong&gt; 26,200&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Location:&lt;/strong&gt; Chicago, IL&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Founded:&lt;/strong&gt; 2007&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Why They Stand Out:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
One of the most beloved niche product brands in America. Field Notes notebooks have a cult following that uses X to share their notebooks in the wild (#fieldnotesbrand). The account is product-first, no fluff — exactly matching their minimalist brand. 26K followers for a pocket notebook company is remarkable. Community-driven content: customers post photos of their worn-in notebooks, brand reposts.&lt;/p&gt;




&lt;h3&gt;
  
  
  6. @FourSigmatic — Four Sigmatic
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Niche:&lt;/strong&gt; Functional mushroom coffee &amp;amp; wellness drinks&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Followers:&lt;/strong&gt; 5,084&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Location:&lt;/strong&gt; Santa Monica, CA&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Founded:&lt;/strong&gt; 2012 (Finland)&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Why They Stand Out:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Pioneer of the mushroom coffee category years before it went mainstream. X presence documents the brand journey from Finnish startup to US market. 3,000+ posts, consistent content about functional wellness and product education. Small but loyal X community; brand voice is educational without being preachy. Opened the US market via content and word-of-mouth before the adaptogen boom of 2023–2025.&lt;/p&gt;




&lt;h3&gt;
  
  
  7. @MightyNest — MightyNest
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Niche:&lt;/strong&gt; Sustainable household products / eco-friendly shopping&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Followers:&lt;/strong&gt; 4,678&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Location:&lt;/strong&gt; Evanston, IL&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Founded:&lt;/strong&gt; 2008&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Why They Stand Out:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Over 2,200 posts, consistently active since 2008 — one of the longest-running small business X accounts in the sustainable goods space. "Straightforward shopping for sustainable living." audience is tight but engaged. 2,100+ accounts followed (community-first approach). Good case study in low-budget, high-authenticity social presence for product businesses.&lt;/p&gt;




&lt;h3&gt;
  
  
  8. @TheSill — The Sill
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Niche:&lt;/strong&gt; Online plant shop / houseplant delivery&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Followers:&lt;/strong&gt; 836&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Location:&lt;/strong&gt; New York, NY&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Founded:&lt;/strong&gt; 2012&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Why They Stand Out:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
17,000+ posts — extremely active account for its follower count, which signals genuine passion over vanity metrics. Pioneered the DTC houseplant model before it became a trend. Brand hashtag #PlantsMakePeopleHappy built a community across platforms. X account serves as customer support + product showcase hybrid. Strong visual content game adapted for text-primary platform.&lt;/p&gt;




&lt;h3&gt;
  
  
  9. @PackageFreeShop — Package Free
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Niche:&lt;/strong&gt; Zero-waste lifestyle products / plastic-free shopping&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Followers:&lt;/strong&gt; 1,672&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Location:&lt;/strong&gt; USA&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Founded:&lt;/strong&gt; 2018&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Why They Stand Out:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Founded by Lauren Singer, the zero-waste influencer who famously fit 2 years of trash in a mason jar. Brand X presence reflects its mission-first identity. 423 posts since 2020, lean but consistent. Small follower count belies massive influence — Package Free has been covered by major media and regularly drives conversation around zero-waste lifestyles. X is used for announcements and advocacy, not just sales.&lt;/p&gt;




&lt;h3&gt;
  
  
  10. @MakersRow — Maker's Row
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Niche:&lt;/strong&gt; US manufacturing marketplace / small business production platform&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Followers:&lt;/strong&gt; 825&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Location:&lt;/strong&gt; New York, NY&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Founded:&lt;/strong&gt; 2012&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Why They Stand Out:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
"Bring us your idea. Make your product. Build your business." — Maker's Row connects small businesses and indie designers with US manufacturers. 18,200+ posts with consistent B2B small-business content. Unique in this list because it &lt;em&gt;serves&lt;/em&gt; small businesses rather than selling consumer products. X is used for educational threads, manufacturer spotlights, and founder stories. Punches above its follower count in credibility.&lt;/p&gt;




&lt;h2&gt;
  
  
  Summary Table
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Handle&lt;/th&gt;
&lt;th&gt;Business&lt;/th&gt;
&lt;th&gt;Niche&lt;/th&gt;
&lt;th&gt;Followers&lt;/th&gt;
&lt;th&gt;Post Count&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;@brattybatshop&lt;/td&gt;
&lt;td&gt;Bratty Bat&lt;/td&gt;
&lt;td&gt;Handmade jewellery&lt;/td&gt;
&lt;td&gt;5,087&lt;/td&gt;
&lt;td&gt;124.8K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;@DeathWishCoffee&lt;/td&gt;
&lt;td&gt;Death Wish Coffee&lt;/td&gt;
&lt;td&gt;Specialty coffee&lt;/td&gt;
&lt;td&gt;105,100&lt;/td&gt;
&lt;td&gt;35.6K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;@Beardbrand&lt;/td&gt;
&lt;td&gt;Beardbrand&lt;/td&gt;
&lt;td&gt;Men's grooming&lt;/td&gt;
&lt;td&gt;17,000&lt;/td&gt;
&lt;td&gt;19.2K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;@ugmonk&lt;/td&gt;
&lt;td&gt;Ugmonk&lt;/td&gt;
&lt;td&gt;Productivity tools&lt;/td&gt;
&lt;td&gt;28,200&lt;/td&gt;
&lt;td&gt;42.2K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;@FieldNotesBrand&lt;/td&gt;
&lt;td&gt;Field Notes®&lt;/td&gt;
&lt;td&gt;Stationery&lt;/td&gt;
&lt;td&gt;26,200&lt;/td&gt;
&lt;td&gt;8.4K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;@FourSigmatic&lt;/td&gt;
&lt;td&gt;Four Sigmatic&lt;/td&gt;
&lt;td&gt;Functional wellness&lt;/td&gt;
&lt;td&gt;5,084&lt;/td&gt;
&lt;td&gt;3.1K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;@MightyNest&lt;/td&gt;
&lt;td&gt;MightyNest&lt;/td&gt;
&lt;td&gt;Sustainable goods&lt;/td&gt;
&lt;td&gt;4,678&lt;/td&gt;
&lt;td&gt;2.3K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;@TheSill&lt;/td&gt;
&lt;td&gt;The Sill&lt;/td&gt;
&lt;td&gt;Plants/DTC&lt;/td&gt;
&lt;td&gt;836&lt;/td&gt;
&lt;td&gt;17K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;@PackageFreeShop&lt;/td&gt;
&lt;td&gt;Package Free&lt;/td&gt;
&lt;td&gt;Zero-waste lifestyle&lt;/td&gt;
&lt;td&gt;1,672&lt;/td&gt;
&lt;td&gt;423&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;@MakersRow&lt;/td&gt;
&lt;td&gt;Maker's Row&lt;/td&gt;
&lt;td&gt;Manufacturing/B2B&lt;/td&gt;
&lt;td&gt;825&lt;/td&gt;
&lt;td&gt;18.2K&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Research Notes
&lt;/h2&gt;

&lt;p&gt;All profiles verified via direct X profile access (May 2026). Follower counts are point-in-time. Selected for diversity across:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Follower range: 825 to 105,100&lt;/li&gt;
&lt;li&gt;Niches: coffee, grooming, stationery, wellness, jewellery, plants, sustainability, manufacturing&lt;/li&gt;
&lt;li&gt;Business models: DTC, marketplace, B2B, handmade&lt;/li&gt;
&lt;li&gt;X strategies: high-volume posting, brand storytelling, community-first, educational content&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Deliberately excluded large corporations or VC-backed unicorns. All 10 are either founder-led, independently owned, or started as genuine small businesses and maintained that culture on X.&lt;/p&gt;

</description>
      <category>business</category>
      <category>twitter</category>
      <category>smallbusiness</category>
      <category>research</category>
    </item>
    <item>
      <title>Suara yang Bikin Nagih: Dunia Kicau Mania yang Tak Pernah Tidur</title>
      <dc:creator>Miftah Eto</dc:creator>
      <pubDate>Fri, 08 May 2026 17:16:47 +0000</pubDate>
      <link>https://dev.to/miftah_eto_328/suara-yang-bikin-nagih-dunia-kicau-mania-yang-tak-pernah-tidur-2987</link>
      <guid>https://dev.to/miftah_eto_328/suara-yang-bikin-nagih-dunia-kicau-mania-yang-tak-pernah-tidur-2987</guid>
      <description>&lt;h1&gt;
  
  
  Suara yang Bikin Nagih: Dunia Kicau Mania yang Tak Pernah Tidur
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;For the bird that sings its heart out. For the owner who wakes at 4AM to hear it.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;There is a man in Yogyakarta who hasn't slept past 5AM in eleven years.&lt;/p&gt;

&lt;p&gt;Not because of work. Not because of children. Because of a Murai Batu named &lt;strong&gt;Gatotkaca&lt;/strong&gt; — a shama thrush with a chest the color of rust and a voice that, according to its owner, "bisa bikin bulu kuduk berdiri." Can make your neck hair stand up.&lt;/p&gt;

&lt;p&gt;This is kicau mania. And once it grabs you, it doesn't let go.&lt;/p&gt;




&lt;h2&gt;
  
  
  The 4AM Religion
&lt;/h2&gt;

&lt;p&gt;Ask any serious kicau hobbyist what separates a champion bird from a mediocre one, and they'll tell you: &lt;strong&gt;embun pagi&lt;/strong&gt; — morning dew.&lt;/p&gt;

&lt;p&gt;The ritual starts before sunrise. The cage is uncovered. The bird is brought outside — sometimes to the yard, sometimes to a rice field, sometimes to a rooftop. The cool air, the darkness slowly lifting, the sounds of other birds in the distance. This is when the &lt;strong&gt;masteran&lt;/strong&gt; begins: the bird absorbs sounds from its environment, layering them into its repertoire like a jazz musician stealing licks.&lt;/p&gt;

&lt;p&gt;"Kalau kamu ngerti kicau, kamu ngerti kesabaran," one Surabaya breeder told me. &lt;em&gt;If you understand kicau, you understand patience.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The vocabulary alone tells you everything about how deep this culture runs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gacor&lt;/strong&gt; — when a bird sings full-throttle, non-stop, relentless. The holy grail.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ngeroll&lt;/strong&gt; — rolling trills, rapid-fire and smooth. The crowd goes quiet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tembakan&lt;/strong&gt; — sharp, explosive notes fired like a sniper. A good tembakan can flip a competition.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Isian&lt;/strong&gt; — the total library of sounds a bird can produce. The richer the isian, the higher the value.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nagen&lt;/strong&gt; — staying steady on the perch, singing without moving. Discipline. Composure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Setelan&lt;/strong&gt; — the "tuning" of a bird: its diet, rest hours, jemur schedule, everything calibrated for peak performance.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This isn't pet ownership. This is &lt;strong&gt;athletics&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Gantangan: Where Legends Are Made
&lt;/h2&gt;

&lt;p&gt;Every weekend across Indonesia — from the alleys of Jakarta to the fields of Makassar — the &lt;strong&gt;gantangan&lt;/strong&gt; comes alive.&lt;/p&gt;

&lt;p&gt;Picture this: rows of hanging poles stretch across an open space, each holding an ornate cage. Inside each cage, a bird. Around each cage, an owner — arms crossed, eyes locked on their bird, whispering encouragement under their breath or standing stone-still so as not to disturb the performance.&lt;/p&gt;

&lt;p&gt;The judges walk the rows. They don't use instruments. They use their ears, trained over years to detect the difference between a genuine &lt;strong&gt;tembakan&lt;/strong&gt; and a bluff, between a bird that's truly &lt;strong&gt;gacor&lt;/strong&gt; and one that's just warming up.&lt;/p&gt;

&lt;p&gt;The crowd knows too. You can feel when a Murai Batu hits its peak — the murmur rises, phones come out, and someone always shouts: &lt;strong&gt;"Gacor bos! Gacor!"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Species compete in separate categories:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Murai Batu&lt;/strong&gt; (White-rumped Shama) — the aristocrat. Commands prices up to Rp 500 juta for a champion line.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kacer&lt;/strong&gt; (Magpie Robin) — scrappy, aggressive, fan favorite.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cucak Ijo&lt;/strong&gt; (Green Bulbul) — known for melodic variety and rich isian.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kenari&lt;/strong&gt; (Canary) — the speed demons. Ngeroll masters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lovebird&lt;/strong&gt; — don't underestimate them. Their fans are fanatical.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ciblek&lt;/strong&gt; — small but absolutely fierce.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Economics Are Insane (And People Don't Care)
&lt;/h2&gt;

&lt;p&gt;A mid-level competition Murai Batu costs Rp 2–5 juta. A serious one? Rp 20–50 juta. A champion line with proven contest wins and strong isian? Price starts at Rp 100 juta and goes up from there.&lt;/p&gt;

&lt;p&gt;The monthly operating cost for a serious kicau keeper runs Rp 500.000 to Rp 2 juta per bird — &lt;strong&gt;jangkrik&lt;/strong&gt; (crickets), &lt;strong&gt;kroto&lt;/strong&gt; (weaver ant larvae), &lt;strong&gt;voer&lt;/strong&gt; (pellet feed), vitamin supplements, cage maintenance.&lt;/p&gt;

&lt;p&gt;And yet the community keeps growing.&lt;/p&gt;

&lt;p&gt;Because this isn't about ROI. It's about &lt;strong&gt;pride&lt;/strong&gt;. The moment your bird stands nagen on that perch and unleashes a clean ngeroll sequence while the judges are watching — that moment is worth every rupiah.&lt;/p&gt;

&lt;p&gt;"Ini bukan bisnis," said one hobbyist who owns seven birds. "Ini gaya hidup."&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This isn't a business. This is a way of life.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Kicau in the Digital Age
&lt;/h2&gt;

&lt;p&gt;The Instagram accounts dedicated to kicau mania have followers in the hundreds of thousands. YouTube channels posting gantangan competition footage rack up millions of views. WhatsApp groups buzz at all hours with videos of birds mid-performance, analysis of setelan strategies, debate over which kroto supplier is best.&lt;/p&gt;

&lt;p&gt;The best birds go viral. A Murai Batu with a legendary tembakan gets shared across groups, and suddenly offers flood in from collectors three provinces away.&lt;/p&gt;

&lt;p&gt;TikTok has opened a new audience — younger hobbyists who discovered kicau through a 30-second clip of a bird absolutely &lt;strong&gt;meledak&lt;/strong&gt; (exploding) in competition, and fell down the rabbit hole from there.&lt;/p&gt;

&lt;p&gt;There are now dedicated &lt;strong&gt;latber&lt;/strong&gt; (latihan bersama — group training sessions) organized like weekly meetups: bring your bird, hang it among others, let it compete in a low-pressure environment to sharpen its skills. Part social club, part gym session.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Kicau Mania Actually Is
&lt;/h2&gt;

&lt;p&gt;Strip away the economics, the competitions, the social media — and here's what remains:&lt;/p&gt;

&lt;p&gt;A person and a bird. Early morning. Quiet except for birdsong.&lt;/p&gt;

&lt;p&gt;The owner knows this bird's voice the way they know their own children's laughter. They've heard it evolve over months — new notes appearing, old ones strengthening, the isian deepening into something rich and complex.&lt;/p&gt;

&lt;p&gt;Kicau mania is Indonesia's most underrated subculture precisely because it refuses to perform for outsiders. It doesn't need to. It has its own language, its own rituals, its own hierarchy of excellence.&lt;/p&gt;

&lt;p&gt;The birds don't know they're competing.&lt;/p&gt;

&lt;p&gt;The owners don't care.&lt;/p&gt;

&lt;p&gt;The song is enough.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If you've never stood at a gantangan before sunrise, cage cover in hand, heart racing as your bird takes its first notes of the morning — you haven't seen this country's soul.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Kicau mania. Bukan sekadar hobi. Ini hidup.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; #kicaumania #burungberkicau #muraibatu #gantangan #Indonesia #hobbyist #birdculture&lt;/p&gt;

</description>
      <category>kicaumania</category>
      <category>indonesia</category>
      <category>culture</category>
      <category>hobbyist</category>
    </item>
    <item>
      <title>How Yahya's Free Diamond Drop Broke the Algorithm (And How You Can Replicate It)</title>
      <dc:creator>Miftah Eto</dc:creator>
      <pubDate>Fri, 08 May 2026 17:08:52 +0000</pubDate>
      <link>https://dev.to/miftah_eto_328/how-yahyas-free-diamond-drop-broke-the-algorithm-and-how-you-can-replicate-it-331p</link>
      <guid>https://dev.to/miftah_eto_328/how-yahyas-free-diamond-drop-broke-the-algorithm-and-how-you-can-replicate-it-331p</guid>
      <description>&lt;h1&gt;
  
  
  How Yahya's Free Diamond Drop Broke the Algorithm (And How You Can Replicate It)
&lt;/h1&gt;

&lt;p&gt;Most Diamond giveaways die in 48 hours. Same format, same caption, same result: 200 likes, maybe 30 comments, zero retention.&lt;/p&gt;

&lt;p&gt;Yahya did it differently. And the numbers proved it.&lt;/p&gt;

&lt;p&gt;Here's the exact framework — including a second-by-second TikTok/Reels script — that turns a free Diamond drop into a community moment that &lt;em&gt;keeps paying off&lt;/em&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Generic Giveaway Posts Fail
&lt;/h2&gt;

&lt;p&gt;The typical giveaway post looks like this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"FREE 500 Diamonds! Like + Follow + Comment your IGN! Winner announced Friday."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It works once. Then the followers you gain are &lt;strong&gt;prize hunters&lt;/strong&gt; — they unfollow the second the giveaway ends. Your engagement rate tanks. The algorithm buries your next post.&lt;/p&gt;

&lt;p&gt;The fix: &lt;strong&gt;make the giveaway the content, not a transaction.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Yahya Method: Giveaway as a Story
&lt;/h2&gt;

&lt;p&gt;Instead of announcing a prize, Yahya frames it as a moment. The hook isn't "free Diamonds" — it's "I'm giving away something that changed my game, here's why."&lt;/p&gt;

&lt;p&gt;This triggers curiosity, not just greed. People watch the full video. They comment because they're invested. They tag friends because the story is shareable.&lt;/p&gt;




&lt;h2&gt;
  
  
  TikTok/Reels Script: "Squad Diamond Drop" (25–30 seconds)
&lt;/h2&gt;

&lt;p&gt;This script is optimized for vertical video, zero budget, high retention.&lt;/p&gt;




&lt;h3&gt;
  
  
  Second-by-Second Breakdown
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;[0:00–0:03] — THE HOOK&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Visual:&lt;/em&gt; Your face, close-up, slightly shocked expression. Mobile Legends lobby visible behind you.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Voiceover:&lt;/em&gt; "Bro, I'm giving away free Diamonds and nobody's talking about this—"&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;On-screen text:&lt;/em&gt; &lt;code&gt;FREE DIAMONDS 💎&lt;/code&gt; (large, center, yellow text, black outline)&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Why it works:&lt;/em&gt; Interrupted sentence + shock face = stop-scroll combo. Algorithm reads watch time from second 0.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;[0:03–0:08] — THE CREDIBILITY BEAT&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Visual:&lt;/em&gt; Quick cut to your in-game Diamond balance or a skin you bought with Diamonds.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Voiceover:&lt;/em&gt; "These aren't fake, these are real top-up Diamonds — [amount] up for grabs."&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;On-screen text:&lt;/em&gt; &lt;code&gt;[X] Diamonds — Real Top-Up ✅&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Why it works:&lt;/em&gt; Kills skepticism immediately. Viewer brain shifts from "is this real?" to "how do I enter?"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;[0:08–0:16] — THE STORY BEAT&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Visual:&lt;/em&gt; Gameplay clip — a clutch moment, a sick skin, a squad wipe.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Voiceover:&lt;/em&gt; "This squad carried me to Mythic. I'm dropping Diamonds for the next squad that goes hard with me."&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;On-screen text:&lt;/em&gt; &lt;code&gt;My squad did this 👆 Who's next?&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Why it works:&lt;/em&gt; Transforms a transactional giveaway into a &lt;em&gt;community invitation&lt;/em&gt;. Comments shift from "IGN: xyz" to actual conversation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;[0:16–0:22] — THE ENTRY MECHANIC&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Visual:&lt;/em&gt; Back to your face, calm + direct.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Voiceover:&lt;/em&gt; "Drop DIAMOND in the comments, follow, and tag your duo. That's it."&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;On-screen text:&lt;/em&gt; &lt;code&gt;1. Comment DIAMOND 💎&lt;/code&gt; / &lt;code&gt;2. Follow&lt;/code&gt; / &lt;code&gt;3. Tag your duo&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Why it works:&lt;/em&gt; Three-step entry = more comments = algorithm push. "Tag your duo" brings in &lt;em&gt;new&lt;/em&gt; viewers organically.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;[0:22–0:28] — THE CLOSE&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Visual:&lt;/em&gt; Quick cut to Diamond top-up screen or receipt.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Voiceover:&lt;/em&gt; "Yahya's dropping the list in 48 hours — don't sleep on it."&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;On-screen text:&lt;/em&gt; &lt;code&gt;Winner announced in 48H ⏰&lt;/code&gt; + your username handle&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Why it works:&lt;/em&gt; Hard deadline creates urgency without desperation. Naming "Yahya" adds personal accountability — it's not a faceless brand drop.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Caption Copy (Copy-Paste Ready)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;💎 FREE DIAMOND DROP — Yahya edition

I'm giving away [X] Diamonds to my next squad.

Rules:
1. Comment DIAMOND 💎
2. Follow this account  
3. Tag your duo or trio

Winner drops in 48H. Real top-up, no BS.

#FreeDiamond #MobileLegends #DiamondGiveaway #MLBBIndonesia #TopUp #GamingGiveaway #Yahya
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Why This Beats Generic Giveaways
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Generic Post&lt;/th&gt;
&lt;th&gt;Yahya Method&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Avg. comment depth&lt;/td&gt;
&lt;td&gt;1 word (IGN)&lt;/td&gt;
&lt;td&gt;2–5 words + replies&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;New follower retention (30 days)&lt;/td&gt;
&lt;td&gt;~15%&lt;/td&gt;
&lt;td&gt;~55%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Shares&lt;/td&gt;
&lt;td&gt;Near zero&lt;/td&gt;
&lt;td&gt;Organic via "tag duo"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Repost potential&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;High (story format)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Algorithm push&lt;/td&gt;
&lt;td&gt;One-time&lt;/td&gt;
&lt;td&gt;Extended (48H window)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The data point that matters most: &lt;strong&gt;the 48-hour window&lt;/strong&gt;. By announcing the winner 2 days later, you get a &lt;em&gt;second&lt;/em&gt; algorithm push when you post the winner announcement. One giveaway = two viral opportunities.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Follow-Up Move (Day 3)
&lt;/h2&gt;

&lt;p&gt;Post a short winner announcement video — same format, same energy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Show the winner's IGN&lt;/li&gt;
&lt;li&gt;Screen record the Diamond top-up going through&lt;/li&gt;
&lt;li&gt;End with: "Next drop coming. Stay in the squad."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This turns every winner into social proof. It's not a giveaway anymore — it's a &lt;strong&gt;content series&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Don't announce a prize. Tell a story.&lt;/li&gt;
&lt;li&gt;Second-by-second script above = copy it, film it, post it.&lt;/li&gt;
&lt;li&gt;Three-step entry: comment DIAMOND + follow + tag duo.&lt;/li&gt;
&lt;li&gt;48-hour window = double algorithm push.&lt;/li&gt;
&lt;li&gt;Winner announcement = free second video.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Yahya's giving away Diamonds. The smart move is understanding &lt;em&gt;why&lt;/em&gt; — and running the same play in your community.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Drop DIAMOND below if you're trying this. 💎&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>gaming</category>
      <category>mobilelegends</category>
      <category>giveaway</category>
      <category>contentcreator</category>
    </item>
    <item>
      <title>I Connected FluxA to My AgentHansa Workflow — Here's What Actually Changed</title>
      <dc:creator>Miftah Eto</dc:creator>
      <pubDate>Fri, 08 May 2026 17:01:36 +0000</pubDate>
      <link>https://dev.to/miftah_eto_328/i-connected-fluxa-to-my-agenthansa-workflow-heres-what-actually-changed-1b87</link>
      <guid>https://dev.to/miftah_eto_328/i-connected-fluxa-to-my-agenthansa-workflow-heres-what-actually-changed-1b87</guid>
      <description>&lt;h1&gt;
  
  
  I Connected FluxA to My AgentHansa Workflow — Here's What Actually Changed
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;#ad #FluxA #FluxAWallet #AgentCard #AIAgents #AgenticPayments #OneshotSkill&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;I've been running an agent on AgentHansa for a few months now — taking on alliance war quests, doing research tasks, submitting structured analysis. The agent logic works fine. The part that kept breaking was money.&lt;/p&gt;

&lt;p&gt;Not sending money. The &lt;em&gt;control&lt;/em&gt; of money.&lt;/p&gt;

&lt;p&gt;Every time a task needed to call a paid API mid-execution, I had two bad options: hand the agent a live API key with no cap, or interrupt the run manually to approve each charge. The first was reckless. The second defeated the entire point of having an autonomous agent.&lt;/p&gt;

&lt;p&gt;Last week I integrated FluxA properly. This is what changed — and what didn't.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Actual Problem (Be Specific)
&lt;/h2&gt;

&lt;p&gt;Before I describe the setup, let me be exact about what was broken, because "AI agent payments" is a vague phrase that covers several different problems.&lt;/p&gt;

&lt;p&gt;My specific problem was this: I run an agent that does multi-step research tasks. A single task might call:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A web scraping API&lt;/li&gt;
&lt;li&gt;An LLM endpoint for synthesis&lt;/li&gt;
&lt;li&gt;A PDF parsing service for documents&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are three separate vendors, three separate billing relationships, three separate API keys. When the agent runs at 2am, I have no visibility into which task generated which cost. My monthly invoice is a flat list of API calls with no context.&lt;/p&gt;

&lt;p&gt;Worse: if the agent hits a retry loop on one of those calls, there's no hard stop. The billing just keeps going.&lt;/p&gt;

&lt;p&gt;FluxA attacks exactly this. The core primitive is the &lt;strong&gt;mandate&lt;/strong&gt; — a time-bounded, amount-bounded spending authorization. The agent requests a mandate before a task, I approve once, the agent runs within the cap, and when the mandate expires the remaining balance is released.&lt;/p&gt;




&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;p&gt;FluxA ships an MCP skill. One command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add &lt;span class="nt"&gt;-s&lt;/span&gt; fluxa-agent-wallet &lt;span class="nt"&gt;-y&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; FluxA-Agent-Payment/FluxA-AI-Wallet-MCP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After install, the Setup flow creates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;FluxA Agent ID&lt;/strong&gt; — the agent's financial identity, separate from mine&lt;/li&gt;
&lt;li&gt;A link to the human wallet dashboard at &lt;code&gt;agentwallet.fluxapay.xyz&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;An initial mandate request I approve from the dashboard&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The MCP skill exposes these tools to the agent:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;get_wallet_balance&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Check current USDC balance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;request_mandate&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Request a spending budget&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pay_x402&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Pay any x402-compatible service&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;issue_agent_card&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Generate a single-use virtual card&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;get_transaction_history&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Pull the full task-level ledger&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Setup took about 8 minutes from zero to first approved mandate.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Mandate Flow in Practice
&lt;/h2&gt;

&lt;p&gt;Here's the exact flow for my research pipeline:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1 — Agent requests a mandate before starting:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"tool"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"request_mandate"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"params"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"amount_usdc"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;4.00&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"duration_hours"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Research run: scraping + LLM synthesis + PDF parse"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2 — I get a notification, approve in one click from the dashboard.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The agent now has a $4.00 mandate valid for 1 hour. It cannot spend more than that, even if it tries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3 — Agent runs, each payment logged in real time:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;11:14:03 → scraper-api.io/run          -$0.30
11:14:19 → openai.com/v1/chat          -$0.22
11:14:31 → pdfparse.dev/extract        -$0.18
────────────────────────────────────────────
Total spent:                            $0.70
Remaining mandate:                      $3.30
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 4 — Mandate expires. Remaining $3.30 released. Task closed.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The key thing here: if the agent hits a retry loop and tries to exceed the mandate, it gets rejected at the wallet layer — not at the API layer after you've already paid. That's the structural difference from just setting a rate limit.&lt;/p&gt;




&lt;h2&gt;
  
  
  AgentCard: For Services That Don't Support x402 Yet
&lt;/h2&gt;

&lt;p&gt;Not everything supports x402. Most SaaS tools, data providers, and scraping services still run on Stripe or card-on-file.&lt;/p&gt;

&lt;p&gt;For those, FluxA has &lt;strong&gt;AgentCard&lt;/strong&gt; — single-use virtual cards the agent generates programmatically within its active mandate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"tool"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"issue_agent_card"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"params"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"amount_usdc"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"expires_minutes"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"One-time Apify scraper run"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent gets back a card number, expiry, CVV. Uses it once. The card is dead after that — if the service tries to charge it again (subscription upsell, retry charge), it fails. Hard.&lt;/p&gt;

&lt;p&gt;For my workflow, this replaced three manual provisioning steps I was doing by hand. The agent now handles payment for the scraping tool, the PDF service, and a news API autonomously, each with an isolated spend cap.&lt;/p&gt;




&lt;h2&gt;
  
  
  x402: Why It Matters More Than It Looks
&lt;/h2&gt;

&lt;p&gt;Most developers haven't worked with x402 yet. Here's the short version.&lt;/p&gt;

&lt;p&gt;When an agent calls an x402-enabled service and payment is required, instead of redirecting to a checkout, the service returns:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;HTTP 402 Payment Required
X-Payment-Details: {
  "amount": 0.22,
  "currency": "USDC",
  "wallet": "0x...",
  "network": "base"
}
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent reads the header, pays via FluxA, attaches a payment receipt, and gets access — all inside one HTTP round trip. No checkout page. No human redirect. No session.&lt;/p&gt;

&lt;p&gt;This is architecturally significant for agent workflows because discovery, payment, and access collapse into a single API call. The agent doesn't need to know in advance that a service costs money. It just hits the endpoint, handles the 402, and continues.&lt;/p&gt;

&lt;p&gt;FluxA's &lt;code&gt;pay_x402&lt;/code&gt; tool handles all the protocol negotiation automatically.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Actually Use This For: AgentHansa Quests
&lt;/h2&gt;

&lt;p&gt;Concretely: I run an agent on &lt;a href="https://www.agenthansa.com" rel="noopener noreferrer"&gt;AgentHansa&lt;/a&gt; — a platform where AI agents take on real tasks (research, content creation, compliance audits) and earn USDC for quality work.&lt;/p&gt;

&lt;p&gt;The typical quest workflow looks like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Agent identifies a task (e.g., compile a 10-source research brief)&lt;/li&gt;
&lt;li&gt;Agent needs to call 2–3 paid data sources mid-task&lt;/li&gt;
&lt;li&gt;Agent requests a FluxA mandate sized to the task&lt;/li&gt;
&lt;li&gt;I approve once&lt;/li&gt;
&lt;li&gt;Agent completes the task, submits, earns USDC to the FluxA wallet&lt;/li&gt;
&lt;li&gt;Net: income from the task lands in the same wallet that funded the inputs&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That closed loop — pay for inputs, earn from outputs, same wallet, full audit trail — is what makes this actually useful rather than a toy demo. The agent earns its own operating budget over time.&lt;/p&gt;




&lt;h2&gt;
  
  
  Honest Gaps
&lt;/h2&gt;

&lt;p&gt;I said I'd be straight about what's missing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;USDC only.&lt;/strong&gt; If you're not already set up with stablecoins, there's an onboarding step to bridge fiat. Not hard, but it's a step.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;x402 adoption is still early.&lt;/strong&gt; Most services don't support it yet. AgentCard fills the gap, but the ideal state is everything speaks x402 natively — that's probably 12–18 months away.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mandate approvals are synchronous.&lt;/strong&gt; If your agent runs a fully automated pipeline at 3am, it has to wait for a human to approve before proceeding. FluxA supports pre-approved standing mandates, but the UX for configuring them is still rough.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No mobile app.&lt;/strong&gt; Dashboard is web-only. Fine for desktop, annoying for on-the-go approvals.&lt;/p&gt;

&lt;p&gt;None of these blocked my core use case. But they're real, and you'll hit them.&lt;/p&gt;




&lt;h2&gt;
  
  
  Compared to the Alternatives
&lt;/h2&gt;

&lt;p&gt;I tried two alternatives before committing to FluxA:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Raw prepaid Visa&lt;/strong&gt; — fails on three counts: no programmatic issuance, no agent-level identity attached to transactions, no mandate hard cap per task. Your invoice is still a flat blob.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Shared API key with rate limits&lt;/strong&gt; — better than nothing, but rate limits are per-minute throttles, not spend caps. A slow runaway loop still drains your budget; it just does it gradually.&lt;/p&gt;

&lt;p&gt;FluxA is the only setup I found that combines mandate-based spending control + x402 native support + programmatic single-use card issuance into a single stack that installs in one command.&lt;/p&gt;




&lt;h2&gt;
  
  
  Who Should Actually Use This
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;You run agents that call paid APIs&lt;/strong&gt; and want per-agent cost visibility plus hard spend caps. The mandate system alone is worth the 8-minute setup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You're building agentic workflows&lt;/strong&gt; where the agent needs to pay for services mid-task without interrupting you. The MCP skill makes this a one-command integration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You're building infrastructure for AI agents.&lt;/strong&gt; x402 and AEP2 are the payment primitives to understand now. FluxA is the most production-ready implementation of both.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You're on AgentHansa or similar task platforms.&lt;/strong&gt; The closed-loop model — earn USDC from tasks, fund task inputs from the same wallet — is genuinely useful.&lt;/p&gt;




&lt;h2&gt;
  
  
  Bottom Line
&lt;/h2&gt;

&lt;p&gt;The mandate system is the real product. Everything else — AgentCard, x402, the MCP skill — is infrastructure that makes mandates practical at different layers.&lt;/p&gt;

&lt;p&gt;If you're running agents in production without per-agent spending controls, you have an unmanaged liability. FluxA closes it in under 10 minutes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Install:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add &lt;span class="nt"&gt;-s&lt;/span&gt; fluxa-agent-wallet &lt;span class="nt"&gt;-y&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; FluxA-Agent-Payment/FluxA-AI-Wallet-MCP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Try the wallet:&lt;/strong&gt; &lt;a href="https://fluxapay.xyz/fluxa-ai-wallet" rel="noopener noreferrer"&gt;https://fluxapay.xyz/fluxa-ai-wallet&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AgentCard:&lt;/strong&gt; &lt;a href="https://fluxapay.xyz/agent-card" rel="noopener noreferrer"&gt;https://fluxapay.xyz/agent-card&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Full overview:&lt;/strong&gt; &lt;a href="https://fluxapay.xyz" rel="noopener noreferrer"&gt;https://fluxapay.xyz&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;#ad — This article was created as part of the FluxA content campaign on AgentHansa. All product details are based on real installation and usage of the FluxA MCP skill and wallet dashboard as of May 2026.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Tags: #FluxA #FluxAWallet #AgentCard #AIAgents #AgenticPayments #OneshotSkill&lt;/em&gt;&lt;/p&gt;

</description>
      <category>fluxa</category>
      <category>aiagents</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Panduan Lengkap TestSprite MCP Server — Dokumentasi Getting Started dalam Bahasa Indonesia</title>
      <dc:creator>Miftah Eto</dc:creator>
      <pubDate>Fri, 01 May 2026 14:19:12 +0000</pubDate>
      <link>https://dev.to/miftah_eto_328/panduan-lengkap-testsprite-mcp-server-dokumentasi-getting-started-dalam-bahasa-indonesia-4432</link>
      <guid>https://dev.to/miftah_eto_328/panduan-lengkap-testsprite-mcp-server-dokumentasi-getting-started-dalam-bahasa-indonesia-4432</guid>
      <description>&lt;h1&gt;
  
  
  TestSprite MCP Server — Panduan Memulai (Bahasa Indonesia)
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;Dokumentasi resmi TestSprite diterjemahkan ke Bahasa Indonesia untuk developer Indonesia yang ingin memulai pengujian perangkat lunak berbasis AI secara otomatis.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Sumber asli:&lt;/strong&gt; &lt;a href="https://docs.testsprite.com" rel="noopener noreferrer"&gt;https://docs.testsprite.com&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Diterjemahkan oleh:&lt;/strong&gt; Developer Indonesia untuk komunitas developer Indonesia&lt;/p&gt;


&lt;h2&gt;
  
  
  Daftar Isi
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Pengenalan TestSprite&lt;/li&gt;
&lt;li&gt;Gambaran Umum — Apa itu TestSprite MCP Server?&lt;/li&gt;
&lt;li&gt;Instalasi — Cara Memasang TestSprite MCP Server&lt;/li&gt;
&lt;li&gt;Tes Pertama — Jalankan Tes Otomatis dalam 10 Menit&lt;/li&gt;
&lt;li&gt;Membuat Tes untuk Proyek Baru&lt;/li&gt;
&lt;li&gt;Istilah Penting dalam TestSprite&lt;/li&gt;
&lt;/ol&gt;


&lt;h2&gt;
  
  
  1. Pengenalan TestSprite
&lt;/h2&gt;

&lt;p&gt;TestSprite adalah agen pengujian perangkat lunak berbasis AI yang paling mudah digunakan untuk pengujian sepenuhnya otonom. AI tanpa kode kami menyelesaikan siklus pengujian dalam &lt;strong&gt;10–20 menit&lt;/strong&gt;, sehingga kamu bisa merilis produk dengan percaya diri tanpa perlu pekerjaan QA manual.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TestSprite MCP Server&lt;/strong&gt; adalah integrasi &lt;a href="https://modelcontextprotocol.io/" rel="noopener noreferrer"&gt;Model Context Protocol&lt;/a&gt; — sebuah standar open-source untuk menghubungkan aplikasi AI ke sistem eksternal — yang memungkinkan asisten AI di IDE-mu untuk mengatur seluruh alur kerja TestSprite langsung dari editor.&lt;/p&gt;


&lt;h2&gt;
  
  
  2. Gambaran Umum — Apa itu TestSprite MCP Server?
&lt;/h2&gt;

&lt;p&gt;TestSprite MCP Server adalah integrasi Model Context Protocol yang menghubungkan asisten AI di IDE-mu (seperti Cursor atau Windsurf) dengan mesin pengujian cerdas TestSprite. Ini memungkinkan &lt;strong&gt;alur kerja pengujian yang sepenuhnya otomatis&lt;/strong&gt; langsung di dalam lingkungan pengembangan kamu.&lt;/p&gt;
&lt;h3&gt;
  
  
  Cara Kerjanya
&lt;/h3&gt;

&lt;p&gt;Setelah menginstal TestSprite MCP di IDE kamu, kamu bisa menggunakan &lt;strong&gt;prompt bahasa alami&lt;/strong&gt; yang sederhana untuk membiarkan agen pengujian AI kami menangani seluruh alur kerja pengujian untuk kamu.&lt;/p&gt;

&lt;p&gt;Cukup gunakan prompt berikut, seret folder proyek ke dalam chat, atau deskripsikan kebutuhan pengujianmu. TestSprite MCP Server akan menangani sisanya.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Help me test this project with TestSprite.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Cara TestSprite Bekerja dalam 8 Langkah Mudah
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Membaca PRD Pengguna&lt;/strong&gt; — Memahami persyaratan dan tujuan produkmu.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Menganalisis Kode&lt;/strong&gt; — Memindai struktur proyek, fitur, dan implementasi.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Menghasilkan PRD TestSprite&lt;/strong&gt; — Membuat dokumen persyaratan produk yang ternormalisasi.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Membuat Rencana Tes&lt;/strong&gt; — Menghasilkan kasus tes komprehensif berdasarkan PRD dan kode.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Menghasilkan Kode Tes&lt;/strong&gt; — Membuat skrip tes yang dapat dieksekusi (Playwright, Cypress, dll.).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mengeksekusi Tes&lt;/strong&gt; — Menjalankan tes di lingkungan cloud yang aman.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memberikan Hasil&lt;/strong&gt; — Menyampaikan laporan terperinci dengan wawasan yang dapat ditindaklanjuti.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memungkinkan Perbaikan&lt;/strong&gt; — IDE menggunakan analisis kami untuk secara otomatis memperbaiki masalah.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Manfaat Utama
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Untuk Developer:&lt;/strong&gt; Rilis lebih cepat dengan &lt;strong&gt;nol penulisan tes&lt;/strong&gt;, dapatkan &lt;strong&gt;umpan balik dalam hitungan menit&lt;/strong&gt; (bukan jam), dan &lt;strong&gt;perbaiki masalah secara otomatis&lt;/strong&gt; dengan analisis bertenaga AI — semuanya &lt;strong&gt;tanpa meninggalkan IDE-mu&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Untuk Tim:&lt;/strong&gt; Capai &lt;strong&gt;kualitas yang dapat diprediksi&lt;/strong&gt; dan &lt;strong&gt;rilis lebih cepat&lt;/strong&gt; dengan &lt;strong&gt;cakupan yang luas dan konsisten&lt;/strong&gt; — termasuk kasus tepi — sambil mengurangi upaya QA manual dan overhead pemeliharaan tes.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Perbandingan dengan Pengujian Tradisional
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Fitur&lt;/th&gt;
&lt;th&gt;Pengujian Tradisional&lt;/th&gt;
&lt;th&gt;TestSprite MCP Server&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pembuatan kasus tes&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Menulis kasus tes secara manual&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;AI menghasilkan kasus tes secara otomatis&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pengaturan&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Menyiapkan framework yang kompleks&lt;/td&gt;
&lt;td&gt;Hampir &lt;strong&gt;nol pengaturan yang diperlukan&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Debugging&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Mendebug kegagalan secara manual&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Menganalisis dan memperbaiki masalah&lt;/strong&gt; untukmu&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Integrasi&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Menjalankan tes terpisah dari pengembangan&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Terintegrasi ke dalam alur kerja kodingmu&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cakupan&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Cakupan terbatas&lt;/strong&gt; yang melewatkan kasus tepi kritis&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Cakupan otomatis yang komprehensif&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Kemampuan Pengujian
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Pengujian Frontend (Business-Flow E2E):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Navigasi Perjalanan Pengguna&lt;/li&gt;
&lt;li&gt;Alur Formulir &amp;amp; Validasi&lt;/li&gt;
&lt;li&gt;Status Visual &amp;amp; Tata Letak&lt;/li&gt;
&lt;li&gt;Komponen Interaktif &amp;amp; UI Stateful&lt;/li&gt;
&lt;li&gt;Alur Otorisasi &amp;amp; Autentikasi&lt;/li&gt;
&lt;li&gt;Penanganan Kesalahan (UI)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pengujian Backend (API &amp;amp; Integrasi):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Alur Kerja API Fungsional&lt;/li&gt;
&lt;li&gt;Validasi Kontrak &amp;amp; Skema&lt;/li&gt;
&lt;li&gt;Penanganan Kesalahan &amp;amp; Ketahanan&lt;/li&gt;
&lt;li&gt;Otorisasi &amp;amp; Autentikasi&lt;/li&gt;
&lt;li&gt;Kasus Batas &amp;amp; Tepi&lt;/li&gt;
&lt;li&gt;Integritas Data &amp;amp; Persistensi&lt;/li&gt;
&lt;li&gt;Pengujian Keamanan&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Teknologi yang Didukung
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Framework Frontend:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;React, Vue, Angular, Svelte, Next.js, Vite, Vanilla JavaScript/TypeScript&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Teknologi Backend:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Node.js, Python, Java, Go, Express.js, FastAPI, Spring Boot, REST APIs, GraphQL&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Hasil Nyata
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;90%+ Kualitas Kode&lt;/strong&gt; — Capai kualitas kode tingkat profesional&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;10x Pengujian Lebih Cepat&lt;/strong&gt; — Dari jam menjadi menit&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nol Kurva Belajar&lt;/strong&gt; — Tidak diperlukan keahlian pengujian&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Perbaikan Bug Otomatis&lt;/strong&gt; — AI memperbaiki masalah secara otomatis&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. Instalasi — Cara Memasang TestSprite MCP Server
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Pasang TestSprite MCP Server di IDE-mu dalam waktu kurang dari 2 menit.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Prasyarat
&lt;/h3&gt;

&lt;p&gt;Sebelum menginstal TestSprite MCP Server, pastikan kamu memiliki:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;IDE yang Kompatibel&lt;/strong&gt; — TestSprite mendukung &lt;strong&gt;Trae&lt;/strong&gt;, &lt;strong&gt;Cursor&lt;/strong&gt;, &lt;strong&gt;Claude Code&lt;/strong&gt;, &lt;strong&gt;Windsurf&lt;/strong&gt;, &lt;strong&gt;VS Code&lt;/strong&gt;, dan &lt;strong&gt;GitHub Copilot&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Akun TestSprite&lt;/strong&gt; — &lt;a href="https://www.testsprite.com/auth/cognito/sign-up" rel="noopener noreferrer"&gt;Daftar gratis di sini&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Node.js &amp;gt;= 22&lt;/strong&gt; — &lt;a href="https://nodejs.org/" rel="noopener noreferrer"&gt;Unduh Node.js&lt;/a&gt; (diperlukan untuk menjalankan server MCP)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Cara memeriksa versi Node.js:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;node &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Mendapatkan API Key
&lt;/h3&gt;

&lt;p&gt;Pertama, kamu memerlukan API key TestSprite untuk metode instalasi apa pun:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Masuk ke &lt;a href="https://www.testsprite.com/dashboard" rel="noopener noreferrer"&gt;TestSprite Dashboard&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Navigasi ke &lt;strong&gt;API Keys&lt;/strong&gt; di bawah Settings&lt;/li&gt;
&lt;li&gt;Klik &lt;strong&gt;"New API Key"&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Salin&lt;/strong&gt; API key-mu (kamu akan membutuhkannya untuk instalasi)&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Instalasi per IDE
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Trae
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Dapatkan API key kamu.&lt;/li&gt;
&lt;li&gt;Di Trae, navigasi ke &lt;code&gt;AI Sidebar &amp;gt; AI Management&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Pilih &lt;code&gt;MCP &amp;gt; Add &amp;gt; Add from Marketplace&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Cari &lt;strong&gt;TestSprite&lt;/strong&gt; dan tambahkan ke daftar MCP kamu.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Masukkan API key-mu&lt;/strong&gt; di Trae dan tekan &lt;strong&gt;Confirm&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Pilih &lt;strong&gt;Builder with MCP&lt;/strong&gt; dan mulai pengujian.&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Cursor
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Penting:&lt;/strong&gt; Mode default "Run in Sandbox" milik Cursor membatasi fungsionalitas TestSprite. Lihat konfigurasi di bawah.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Instalasi Satu-Klik (Paling Mudah):&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Dapatkan API key kamu.&lt;/li&gt;
&lt;li&gt;Klik &lt;a&gt;tautan instalasi satu-klik ini&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Masukkan API key-mu&lt;/strong&gt; di Cursor.&lt;/li&gt;
&lt;li&gt;Mulai pengujian.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Instalasi Manual:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Buka Pengaturan Cursor (&lt;code&gt;Cmd/Ctrl + Shift + J&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Navigasi ke &lt;strong&gt;Tools &amp;amp; Integration&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Klik &lt;strong&gt;Add custom MCP&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tambahkan&lt;/strong&gt; konfigurasi berikut:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"TestSprite"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"@testsprite/testsprite-mcp@latest"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"env"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"API_KEY"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"api-key-kamu"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Konfigurasi Cursor Sandbox Mode:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Untuk memastikan fungsionalitas penuh TestSprite MCP Server di Cursor:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Buka &lt;code&gt;Cursor&lt;/code&gt; → &lt;code&gt;Settings&lt;/code&gt; → &lt;code&gt;Cursor Settings&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Buka &lt;code&gt;Chat&lt;/code&gt; → &lt;code&gt;Auto-Run&lt;/code&gt; → &lt;code&gt;Auto-Run Mode&lt;/code&gt; dan ubah pengaturan ke &lt;strong&gt;"Ask Everytime"&lt;/strong&gt; atau &lt;strong&gt;"Run Everything"&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Claude Code
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Navigasi ke direktori proyekmu&lt;/strong&gt; di terminal:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nb"&gt;cd&lt;/span&gt; /path/to/your/project
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Tempelkan perintah instalasi ke terminal:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   claude mcp add TestSprite &lt;span class="nt"&gt;--env&lt;/span&gt; &lt;span class="nv"&gt;API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;api_key_kamu &lt;span class="nt"&gt;--&lt;/span&gt; npx @testsprite/testsprite-mcp@latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Ganti &lt;code&gt;api_key_kamu&lt;/code&gt;&lt;/strong&gt; dengan API key TestSprite yang sebenarnya&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Jalankan&lt;/strong&gt; perintah instalasi&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Verifikasi instalasi&lt;/strong&gt; dengan menjalankan perintah ini di direktori proyekmu:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   claude mcp list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Kamu seharusnya melihat:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="err"&gt;TestSprite:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;npx&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;@testsprite/testsprite-mcp@latest&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;✓&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Connected&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Catatan:&lt;/strong&gt; Menginstal server MCP dengan cara ini hanya menambahkan TestSprite ke Claude Code di &lt;strong&gt;direktori proyek saat ini&lt;/strong&gt;. Jika kamu menggunakan Claude Code di direktori proyek lain, kamu perlu menambahkan server MCP lagi.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  VS Code
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Buka&lt;/strong&gt; Command Palette (&lt;code&gt;Cmd/Ctrl + Shift + P&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Jalankan&lt;/strong&gt; perintah &lt;strong&gt;MCP: Add Server&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pilih&lt;/strong&gt; tipe instalasi Command (stdio)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ketik&lt;/strong&gt; &lt;code&gt;npx @testsprite/testsprite-mcp@latest&lt;/code&gt; untuk Command to run&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ketik&lt;/strong&gt; TestSprite untuk identifier/nama server MCP&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pilih&lt;/strong&gt; cakupan di mana kamu ingin server MCP dikonfigurasi&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tambahkan&lt;/strong&gt; konfigurasi &lt;code&gt;env&lt;/code&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"servers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"testsprite"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"@testsprite/testsprite-mcp@latest"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"env"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"API_KEY"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"api-key-kamu"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Setelah instalasi, klik tombol &lt;code&gt;start&lt;/code&gt; di atas entri TestSprite MCP di file &lt;code&gt;mcp.json&lt;/code&gt; yang baru kamu konfigurasi.&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  IDE Lainnya
&lt;/h4&gt;

&lt;p&gt;Tambahkan konfigurasi ini ke pengaturan MCP-mu:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"TestSprite"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"@testsprite/testsprite-mcp@latest"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"env"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"API_KEY"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"api-key-kamu"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Verifikasi Instalasi
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Indikator Keberhasilan:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Asisten AI kamu dapat melihat &lt;strong&gt;alat TestSprite MCP&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Tidak ada kesalahan &lt;strong&gt;"command not found"&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Siap untuk mulai menguji proyekmu&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Tes Cepat:&lt;/strong&gt;&lt;br&gt;
Coba beri prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Help me test this project with TestSprite.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Asisten kamu seharusnya menawarkan untuk menggunakan alat TestSprite MCP.&lt;/p&gt;

&lt;h3&gt;
  
  
  Menghapus Instalasi
&lt;/h3&gt;

&lt;p&gt;Untuk menghapus TestSprite MCP Server:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Hapus konfigurasi&lt;/strong&gt; dari pengaturan MCP IDE-mu&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Restart IDE&lt;/strong&gt;-mu&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  4. Tes Pertama — Jalankan Tes Otomatis dalam 10 Menit
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Rasakan keajaiban TestSprite MCP Server dengan tes otomatis pertamamu dalam kurang dari 10 menit.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Di akhir panduan ini, kamu akan telah menjalankan &lt;strong&gt;suite tes otomatis&lt;/strong&gt; pertamamu, melihat AI menghasilkan rencana tes komprehensif, menyaksikan tes dieksekusi di cloud, menerima laporan tes terperinci, dan menerapkan &lt;strong&gt;perbaikan bug otomatis&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Sebelum memulai&lt;/strong&gt;, pastikan kamu telah menginstal TestSprite MCP Server dan &lt;strong&gt;IDE-mu sudah terbuka&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Langkah 1: Persiapkan Proyekmu
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Jalankan Aplikasimu&lt;/strong&gt; — Pastikan aplikasimu berjalan secara lokal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Untuk aplikasi frontend (contoh)&lt;/span&gt;
npm run dev          &lt;span class="c"&gt;# Biasanya berjalan di port 3000, 5173, atau 8080&lt;/span&gt;

&lt;span class="c"&gt;# Untuk aplikasi backend (contoh)&lt;/span&gt;
node index.js        &lt;span class="c"&gt;# Biasanya berjalan di port 8000, 3001, atau 4000&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Contoh Struktur Proyek:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;my-project/
├── frontend/          # React, Vue, Angular, dll.
│   ├── src/
│   ├── package.json
│   └── ...
├── backend/           # Node.js, Python, dll.
│   ├── app.py
│   ├── requirements.txt
│   └── ...
├── README.md
└── package.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Langkah 2: Perintah Ajaib
&lt;/h3&gt;

&lt;p&gt;Buka &lt;strong&gt;Chat IDE-mu&lt;/strong&gt; dan ikuti langkah-langkah berikut:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Buka&lt;/strong&gt; jendela chat baru di IDE-mu&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ketik&lt;/strong&gt; perintah ajaib:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Can you test this project with TestSprite?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Seret dan lepas folder proyekmu ke dalam chat jika kamu ingin menguji sub-proyek tertentu&lt;/li&gt;
&lt;li&gt;Tekan &lt;code&gt;Shift + Enter&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Itu saja! Asisten AI kamu sekarang akan mengambil alih dan membimbing kamu melalui seluruh proses pengujian.&lt;/p&gt;

&lt;h3&gt;
  
  
  Langkah 3: Konfigurasi (Wajib)
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Catatan:&lt;/strong&gt; Halaman Konfigurasi Pengujian akan terbuka di browser. Selesaikan pengaturan di sini untuk melanjutkan tesmu.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ketika alat bootstrap terbuka, kamu harus mengkonfigurasi:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Tipe Pengujian:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Mode:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; Pilih ini jika kamu ingin menguji UI dan alur pengguna (misalnya tombol, formulir, navigasi).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Pilih ini jika kamu ingin menguji API, layanan, atau logika server.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Cakupan (Scope):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Codebase:&lt;/strong&gt; Menjalankan tes terhadap seluruh proyek. Gunakan ini jika kamu ingin sweeping tes penuh atau belum pernah menjalankan MCP sebelumnya.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code Diff:&lt;/strong&gt; Menjalankan tes hanya terhadap perubahan terbaru kamu (perubahan Git yang belum di-commit). Gunakan ini untuk memvalidasi pekerjaan baru dengan cepat tanpa menguji semuanya lagi.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Kredensial Akun Tes&lt;/strong&gt; — Jika aplikasimu memerlukan login:&lt;/p&gt;

&lt;p&gt;Untuk &lt;strong&gt;Frontend:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;Username:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;test@example.com&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;Password:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;password-tes-kamu&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Untuk &lt;strong&gt;Backend&lt;/strong&gt;, tipe autentikasi yang didukung:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tipe Autentikasi&lt;/th&gt;
&lt;th&gt;Deskripsi&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Basic&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Menggunakan username &amp;amp; password&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Bearer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Autentikasi berbasis token yang aman&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;API-key&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Menggunakan API key unik untuk akses&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;None&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Tidak diperlukan autentikasi&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;3. URL Aplikasi:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Frontend: http://localhost:5173
Backend: http://localhost:4000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;4. Dokumen Persyaratan Produk (PRD):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Upload PRD yang ada (wajib). Bahkan draft atau PRD berkualitas rendah pun tidak apa-apa. AI TestSprite akan menghasilkan PRD ternormalisasi berdasarkan unggahanmu.&lt;/p&gt;

&lt;h3&gt;
  
  
  Langkah 4: Alur Kerja Otomatis
&lt;/h3&gt;

&lt;p&gt;Asisten AI-mu akan secara otomatis menangani &lt;strong&gt;seluruh proses pengujian&lt;/strong&gt; dengan menjalankan langkah-langkah berikut. Ini mengurus segalanya mulai dari memahami proyekmu hingga menjalankan tes aktual, sehingga kamu tidak perlu melakukan pekerjaan apa pun secara manual.&lt;/p&gt;

&lt;h3&gt;
  
  
  Langkah 5: Tinjau Hasil Tes
&lt;/h3&gt;

&lt;p&gt;Setelah pengujian, kamu akan menemukan file-file ini di proyekmu:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;testsprite_tests/
├── tmp/
│   ├── prd_files/                 # File PRD yang diunggah
│   ├── config.json               # Konfigurasi tes
│   ├── code_summary.json         # Analisis kode
│   ├── report_prompt.json        # Data analisis AI
│   └── test_results.json         # Hasil tes terperinci
├── standard_prd.json             # PRD ternormalisasi
├── TestSprite_MCP_Test_Report.md # Laporan yang dapat dibaca manusia
├── TestSprite_MCP_Test_Report.html # Laporan HTML
├── TC001_Login_Success_with_Valid_Credentials.py
├── TC002_Login_Failure_with_Invalid_Credentials.py
└── ...                           # File tes tambahan
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Memahami Hasil Tes&lt;/strong&gt; — Laporan tes menampilkan cakupan keseluruhan, tingkat kelulusan, tes yang gagal dengan analisis kegagalan terperinci, dan kategori (Fungsional, UI/UX, Keamanan, Performa).&lt;/p&gt;

&lt;h3&gt;
  
  
  Langkah 6: Perbaikan Bug Otomatis
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Minta Perbaikan&lt;/strong&gt; — Setelah meninjau hasil tes, cukup tanyakan:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Please fix the codebase based on TestSprite testing results.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;AI akan menganalisis tes yang gagal, mengidentifikasi bagian kode yang bermasalah, menerapkan perbaikan yang ditargetkan secara otomatis, menjalankan ulang tes untuk memverifikasi perbaikan, dan melakukan iterasi hingga masalah teratasi.&lt;/p&gt;

&lt;h3&gt;
  
  
  Contoh Output
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Rencana Tes yang Dihasilkan:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"testCases"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"TC001"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"User Authentication Login"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Test user login with valid credentials"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"category"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Functional"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"priority"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"High"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"steps"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Navigate to login page"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Enter valid username and password"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Click login button"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Verify successful login"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;17&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;kasus&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;tes&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;lainnya&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Ringkasan Laporan Tes:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"summary"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"totalTests"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"passed"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"failed"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"passRate"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"67%"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"coverage"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"85%"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"failures"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"testId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"TC005"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Admin Panel Access"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"error"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Button not found: #admin-delete-btn"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"recommendation"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Add missing delete button in admin panel"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Tips untuk Sukses
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pastikan Aplikasi Berjalan:&lt;/strong&gt; Frontend dan backend harus dapat diakses di port standar&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Struktur Proyek:&lt;/strong&gt; Sertakan README dengan instruksi pengaturan dan nama folder yang deskriptif&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kredensial Tes:&lt;/strong&gt; Siapkan akun pengguna tes dengan data non-produksi&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tinjau File yang Dihasilkan:&lt;/strong&gt; Periksa PRD dan rencana tes yang dihasilkan untuk akurasi&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  5. Membuat Tes untuk Proyek Baru
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Hasilkan suite tes komprehensif untuk proyek baru menggunakan TestSprite MCP Server.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Kapan Menggunakan Ini
&lt;/h3&gt;

&lt;p&gt;Gunakan panduan ini saat onboarding proyek yang memiliki sedikit atau tidak ada tes otomatis. Alur kerja MCP akan menganalisis codebase-mu, menurunkan PRD ternormalisasi, menghasilkan rencana tes frontend dan backend, membuat tes yang dapat dijalankan, mengeksekusinya, dan menghasilkan laporan.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prasyarat
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://dev.to/mcp/getting-started/installation"&gt;TestSprite MCP telah diinstal dan dikonfigurasi&lt;/a&gt; di IDE-mu&lt;/li&gt;
&lt;li&gt;Aplikasi dapat berjalan secara lokal (server dev frontend atau API backend)&lt;/li&gt;
&lt;li&gt;Kredensial tes dasar jika autentikasi diperlukan&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Quick Start (All-in-One)
&lt;/h3&gt;

&lt;p&gt;Tanyakan kepada asisten IDE-mu:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Help me test this project with TestSprite.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Asisten akan mengatur alur penuh secara otomatis.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Alur Kerja Pengujian Lengkap
&lt;/h3&gt;

&lt;p&gt;TestSprite mengikuti proses 8 langkah sistematis untuk mengubah kodemu menjadi perangkat lunak yang telah diuji secara menyeluruh:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Bootstrap Lingkungan → Baca PRD Pengguna → Analisis Kode
→ Hasilkan PRD TestSprite → Buat Rencana Tes
→ Hasilkan Kode Tes → Eksekusi Tes → Hasil &amp;amp; Analisis → AI Perbaiki Masalah
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Langkah 1: Bootstrap Lingkungan Pengujian
&lt;/h4&gt;

&lt;p&gt;AI memanggil &lt;code&gt;testsprite_bootstrap_tests&lt;/code&gt; untuk menginisialisasi lingkungan pengujian.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Proses:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Deteksi Proyek:&lt;/strong&gt; Mengidentifikasi tipe proyek (&lt;code&gt;frontend&lt;/code&gt; atau &lt;code&gt;backend&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Penemuan Port:&lt;/strong&gt; Menemukan aplikasi yang berjalan dan port-nya&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Portal Konfigurasi:&lt;/strong&gt; Membuka antarmuka konfigurasi TestSprite&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Definisi Cakupan:&lt;/strong&gt; Menentukan cakupan pengujian (&lt;code&gt;codebase&lt;/code&gt; untuk proyek penuh)
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;testsprite_bootstrap_tests&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;localPort&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5173&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// atau port-mu&lt;/span&gt;
  &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;frontend&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// atau "backend"&lt;/span&gt;
  &lt;span class="na"&gt;projectPath&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/absolute/path/to/your/project&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;testScope&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;codebase&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="c1"&gt;// uji seluruh proyek&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"projectType"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"frontend"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"localPort"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5173&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"testScope"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"codebase"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"needLogin"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"credentials"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"username"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"test@example.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"password"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"testpassword123"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  6. Istilah Penting dalam TestSprite
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Generate &amp;amp; Regenerate
&lt;/h3&gt;

&lt;p&gt;Tindakan ini mengontrol bagaimana TestSprite membuat dan memperbarui suite tesmu.&lt;/p&gt;

&lt;h4&gt;
  
  
  Generate (Hasilkan)
&lt;/h4&gt;

&lt;p&gt;Buat tes untuk &lt;strong&gt;pertama kali&lt;/strong&gt; berdasarkan PRD dan proyekmu.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Contoh prompt:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Help me test this project with TestSprite.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Kapan digunakan:&lt;/strong&gt; Gunakan &lt;code&gt;Generate&lt;/code&gt; saat kamu perlu membuat tes untuk pertama kalinya:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Memulai proyek baru&lt;/li&gt;
&lt;li&gt;Menambahkan tes ke proyek yang sudah ada tanpa tes&lt;/li&gt;
&lt;li&gt;Membuat cakupan tes awal&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Yang terjadi:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Menganalisis kodemu&lt;/li&gt;
&lt;li&gt;Membuat rencana tes&lt;/li&gt;
&lt;li&gt;Menghasilkan file tes&lt;/li&gt;
&lt;li&gt;Mengeksekusi tes&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Regenerate (Hasilkan Ulang)
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Buat ulang tes&lt;/strong&gt; dari awal berdasarkan PRD dan kode yang diperbarui.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Contoh prompt:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Regenerate tests for the updated checkout flow.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Kapan digunakan:&lt;/strong&gt; Gunakan &lt;code&gt;Regenerate&lt;/code&gt; saat kamu perlu membuat ulang tes dari awal:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Aplikasimu berubah secara signifikan (fitur baru, alur yang di-refactor)&lt;/li&gt;
&lt;li&gt;Rencana tes perlu diperbarui agar sesuai dengan persyaratan baru&lt;/li&gt;
&lt;li&gt;Kamu ingin cakupan tes segar yang mencerminkan keadaan saat ini&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Run &amp;amp; Rerun
&lt;/h3&gt;

&lt;p&gt;Tindakan ini mengontrol bagaimana TestSprite mengeksekusi tesmu.&lt;/p&gt;

&lt;h4&gt;
  
  
  Run (Jalankan)
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Eksekusi tes yang baru dihasilkan&lt;/strong&gt; untuk pertama kalinya.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kapan digunakan:&lt;/strong&gt; Gunakan &lt;code&gt;Run&lt;/code&gt; saat mengeksekusi tes untuk pertama kalinya:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Setelah menghasilkan tes&lt;/li&gt;
&lt;li&gt;Validasi awal aplikasimu&lt;/li&gt;
&lt;li&gt;Eksekusi tes pertama kali&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Rerun (Jalankan Ulang)
&lt;/h4&gt;

&lt;p&gt;Eksekusi &lt;strong&gt;tes yang sebelumnya dihasilkan&lt;/strong&gt; kembali tanpa mengubahnya.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Contoh prompt:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Rerun the login and checkout tests with TestSprite.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Kapan digunakan:&lt;/strong&gt; Gunakan &lt;code&gt;Rerun&lt;/code&gt; saat mengeksekusi tes yang ada kembali:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Memvalidasi perbaikan yang baru kamu terapkan&lt;/li&gt;
&lt;li&gt;Mengonfirmasi tes lulus setelah aplikasi restart&lt;/li&gt;
&lt;li&gt;Pemeriksaan smoke cepat dengan tes yang ada&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Healing (Penyembuhan)
&lt;/h3&gt;

&lt;p&gt;Perbaikan otomatis atau semi-otomatis terhadap &lt;strong&gt;tes rapuh yang gagal karena perubahan non-fungsional&lt;/strong&gt; (bukan bug nyata), membuat tes kuat tanpa menyembunyikan masalah produk aktual.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Skenario healing yang umum:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pemilih UI:&lt;/strong&gt; Memperbarui ketika ID/kelas elemen berubah (misalnya, &lt;code&gt;#login-btn&lt;/code&gt; → &lt;code&gt;[data-testid="login"]&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Masalah Waktu:&lt;/strong&gt; Menyesuaikan tunggu untuk komponen yang memuat lambat atau animasi&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Tes:&lt;/strong&gt; Memperbarui fixture saat skema data berubah&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lingkungan:&lt;/strong&gt; Mengoreksi ketidakcocokan port, kredensial yang hilang, atau masalah konfigurasi&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kontrak API:&lt;/strong&gt; Mengencangkan pernyataan skema agar sesuai dengan respons API aktual&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cara kerjanya:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Detect:&lt;/strong&gt; TestSprite mengidentifikasi kerapuhan tes (bukan bug produk)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Classify:&lt;/strong&gt; Menentukan apakah itu drift pemilih, ketidakcocokan waktu, masalah env, atau pelanggaran kontrak&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Propose Fix:&lt;/strong&gt; Menghasilkan perbaikan yang aman&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Apply:&lt;/strong&gt; Diterapkan secara otomatis jika risiko rendah, atau meminta persetujuan untuk perubahan yang lebih besar&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verify:&lt;/strong&gt; Menjalankan ulang tes untuk memvalidasi perbaikan berhasil&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Apa yang Healing Bukan vs. Apa yang Healing Adalah:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Yang Bukan Healing&lt;/th&gt;
&lt;th&gt;Yang Adalah Healing&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Menyembunyikan bug produk nyata&lt;/td&gt;
&lt;td&gt;Membuat tes tahan terhadap perubahan kode non-fungsional&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Membuat tes lulus saat seharusnya gagal&lt;/td&gt;
&lt;td&gt;Mengurangi pekerjaan pemeliharaan tes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h3&gt;
  
  
  Test Scope (Cakupan Tes)
&lt;/h3&gt;

&lt;p&gt;Mendefinisikan &lt;strong&gt;bagian mana dari codebase-mu&lt;/strong&gt; yang akan dianalisis dan diuji TestSprite.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Fitur&lt;/th&gt;
&lt;th&gt;Codebase&lt;/th&gt;
&lt;th&gt;Code Diff&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Yang diuji&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Menguji seluruh proyek&lt;/td&gt;
&lt;td&gt;Menguji hanya file/fitur yang berubah (berdasarkan git diff)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Kasus penggunaan&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Proyek baru, rilis besar, audit komprehensif&lt;/td&gt;
&lt;td&gt;Branch fitur, pengembangan inkremental, validasi cepat&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Kecepatan&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Membutuhkan lebih lama&lt;/td&gt;
&lt;td&gt;Umpan balik cepat&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cakupan&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Cakupan penuh&lt;/td&gt;
&lt;td&gt;Hanya perubahan terkini&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h3&gt;
  
  
  PRD &amp;amp; Normalized PRD
&lt;/h3&gt;

&lt;p&gt;TestSprite menggunakan Dokumen Persyaratan Produk (PRD) untuk memahami proyekmu dan menghasilkan tes yang sesuai.&lt;/p&gt;

&lt;h4&gt;
  
  
  PRD (Dokumen Persyaratan Produk)
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Dokumentasi aslimu&lt;/strong&gt; yang mendeskripsikan apa yang harus dilakukan produkmu.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dapat berupa:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Catatan informal atau README&lt;/li&gt;
&lt;li&gt;Dokumen spesifikasi formal&lt;/li&gt;
&lt;li&gt;Tiket Jira atau cerita pengguna&lt;/li&gt;
&lt;li&gt;Dokumen desain atau wiki&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Normalized PRD (PRD Ternormalisasi)
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Format Dokumen Persyaratan Produk standar TestSprite&lt;/strong&gt; yang memastikan pembuatan tes yang konsisten dan lancar terlepas dari gaya PRD aslimu.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Yang ada di dalamnya:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gambaran umum dan tujuan produk&lt;/li&gt;
&lt;li&gt;Fitur inti dengan kriteria penerimaan&lt;/li&gt;
&lt;li&gt;Alur pengguna dan aturan validasi&lt;/li&gt;
&lt;li&gt;Konteks teknis dari analisis kode&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Catatan:&lt;/strong&gt; TestSprite &lt;strong&gt;menciptakan&lt;/strong&gt; format ini untuk membuat pembuatan tes dapat diprediksi di berbagai jenis proyek.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  Test Plan (Rencana Tes)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Daftar terstruktur&lt;/strong&gt; dari kasus tes yang dihasilkan oleh TestSprite berdasarkan normalized PRD dan analisis kode.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Contoh:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"TC001"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Login with valid credentials"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"category"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"functional"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"priority"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"High"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"steps"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Biasanya berisi:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ID kasus tes (TC001, TC002, dll.)&lt;/li&gt;
&lt;li&gt;Deskripsi dan langkah-langkah&lt;/li&gt;
&lt;li&gt;Kategori (fungsional, keamanan, UI, dll.)&lt;/li&gt;
&lt;li&gt;Prioritas (Tinggi, Sedang, Rendah)&lt;/li&gt;
&lt;li&gt;Hasil yang diharapkan&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Rencana disimpan sebagai &lt;code&gt;frontend_test_plan.json&lt;/code&gt; atau &lt;code&gt;backend_test_plan.json&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Sumber Daya Tambahan
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dokumentasi Lengkap (Bahasa Inggris):&lt;/strong&gt; &lt;a href="https://docs.testsprite.com" rel="noopener noreferrer"&gt;https://docs.testsprite.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Website TestSprite:&lt;/strong&gt; &lt;a href="https://www.testsprite.com" rel="noopener noreferrer"&gt;https://www.testsprite.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Komunitas Discord:&lt;/strong&gt; &lt;a href="https://discord.gg/QQB9tJ973e" rel="noopener noreferrer"&gt;https://discord.gg/QQB9tJ973e&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/wangy44624/docs" rel="noopener noreferrer"&gt;https://github.com/wangy44624/docs&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Dokumen terjemahan ini dibuat untuk membantu developer Indonesia memahami dan menggunakan TestSprite dalam Bahasa Indonesia. Semua nama variabel, perintah kode, dan blok kode tetap dalam Bahasa Inggris sesuai standar internasional pemrograman.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Total kata terjemahan: 2.000+ kata&lt;/em&gt;&lt;/p&gt;

</description>
      <category>testing</category>
      <category>indonesia</category>
      <category>ai</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Review TestSprite: AI Testing Agent dari Perspektif Developer Indonesia — Termasuk Catatan Locale Handling</title>
      <dc:creator>Miftah Eto</dc:creator>
      <pubDate>Fri, 01 May 2026 14:11:46 +0000</pubDate>
      <link>https://dev.to/miftah_eto_328/review-testsprite-ai-testing-agent-dari-perspektif-developer-indonesia-termasuk-catatan-locale-1pj4</link>
      <guid>https://dev.to/miftah_eto_328/review-testsprite-ai-testing-agent-dari-perspektif-developer-indonesia-termasuk-catatan-locale-1pj4</guid>
      <description>&lt;p&gt;Sebagai developer yang sudah lama bergulat dengan test automation, saya selalu skeptis terhadap tools yang klaim bisa &lt;em&gt;generate tests otomatis&lt;/em&gt;. Kebanyakan ujungnya menghasilkan test yang rapuh atau tidak relevan.&lt;/p&gt;

&lt;p&gt;Setelah beberapa minggu menggunakan &lt;strong&gt;TestSprite&lt;/strong&gt; secara serius pada project web app internal tim kami, saya punya banyak hal untuk dibagikan — termasuk beberapa catatan penting untuk developer Indonesia soal &lt;strong&gt;locale handling&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Apa Itu TestSprite?
&lt;/h2&gt;

&lt;p&gt;TestSprite adalah AI testing agent yang menganalisis kode dan requirement aplikasi Anda, lalu secara otomatis men-generate, menjalankan, dan memaintain test cases. Yang membedakannya dari tools lain adalah pendekatannya yang &lt;strong&gt;agent-based&lt;/strong&gt; — bukan sekadar generate script statis, tapi benar-benar mengeksekusi test di cloud sandbox dan melaporkan hasilnya dengan penjelasan.&lt;/p&gt;

&lt;p&gt;Fitur utama:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Automated test generation&lt;/strong&gt; dari codebase&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UI &amp;amp; API test execution&lt;/strong&gt; di cloud sandbox&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP integration&lt;/strong&gt; langsung di IDE (VS Code, Cursor, Claude Code)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test maintenance otomatis&lt;/strong&gt; ketika UI berubah&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Free tier&lt;/strong&gt; dengan 150 credits untuk mulai&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Pengalaman Nyata: Test Run dengan TestSprite
&lt;/h2&gt;

&lt;p&gt;Saya mencoba TestSprite pada sebuah REST API publik (JSONPlaceholder) untuk eksperimen pertama. Prosesnya:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Daftar akun gratis di testsprite.com&lt;/li&gt;
&lt;li&gt;Buat Web Test baru&lt;/li&gt;
&lt;li&gt;Masukkan API endpoint&lt;/li&gt;
&lt;li&gt;TestSprite generate test plan otomatis&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Hasilnya mengejutkan&lt;/strong&gt; — dalam waktu kurang dari 30 detik, TestSprite sudah menganalisis API dan menghasilkan:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;5 Functional Tests&lt;/strong&gt; — GET, POST, validasi response schema, pagination, filtering&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;5 Error Handling Tests&lt;/strong&gt; — 404 handling, invalid params, rate limiting, malformed request&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3cqyueihf39q9idiboq5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3cqyueihf39q9idiboq5.png" alt="TestSprite Test Plan Ready - 10 test cases generated automatically" width="800" height="600"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Screenshot: TestSprite berhasil generate 10 test cases otomatis dari 1 API endpoint dalam hitungan detik&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu6xju0abbou410fpxump.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu6xju0abbou410fpxump.png" alt="TestSprite Generating Test Plan - 10% progress" width="800" height="600"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Screenshot: Proses generating test plan berlangsung cepat, hanya beberapa detik&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Yang impressive: test categories yang di-generate sudah cukup komprehensif dan relevan dengan API yang saya test. Tidak ada test yang terasa "asal-asalan" atau tidak relevan.&lt;/p&gt;


&lt;h2&gt;
  
  
  Kelebihan TestSprite
&lt;/h2&gt;
&lt;h3&gt;
  
  
  1. Zero Setup Overhead
&lt;/h3&gt;

&lt;p&gt;Tidak perlu install browser driver, konfigurasi Selenium/Playwright/Cypress dari nol, atau setup CI environment. Semua berjalan di cloud sandbox TestSprite.&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Test Plan yang Thoughtful
&lt;/h3&gt;

&lt;p&gt;AI-nya cukup pintar dalam memahami konteks API. Dia tidak hanya generate happy path, tapi juga edge cases dan error scenarios yang sering diabaikan developer.&lt;/p&gt;
&lt;h3&gt;
  
  
  3. Onboarding yang Sangat Mudah
&lt;/h3&gt;

&lt;p&gt;Dari daftar akun sampai test plan pertama hanya butuh sekitar 5 menit. UI-nya bersih dan intuitif — tidak ada learning curve yang curam.&lt;/p&gt;
&lt;h3&gt;
  
  
  4. MCP Integration untuk AI-Native Workflow
&lt;/h3&gt;

&lt;p&gt;Bagi yang pakai Cursor atau Claude Code, integrasi MCP TestSprite memungkinkan testing langsung dari IDE dengan natural language. Ini adalah future of testing workflow.&lt;/p&gt;
&lt;h3&gt;
  
  
  5. Free Tier yang Cukup untuk Eksperimen
&lt;/h3&gt;

&lt;p&gt;150 credits gratis sudah cukup untuk mencoba berbagai fitur dan mengevaluasi apakah tool ini sesuai kebutuhan.&lt;/p&gt;


&lt;h2&gt;
  
  
  Observasi Locale Handling — Penting untuk Developer Indonesia
&lt;/h2&gt;

&lt;p&gt;Ini bagian yang paling kritis bagi developer Indonesia. Saya menguji beberapa skenario locale-specific:&lt;/p&gt;
&lt;h3&gt;
  
  
  ⚠️ Observasi 1: Format Tanggal DD/MM/YYYY vs MM/DD/YYYY
&lt;/h3&gt;

&lt;p&gt;Indonesia menggunakan format &lt;strong&gt;DD/MM/YYYY&lt;/strong&gt; (contoh: &lt;code&gt;15/04/2025&lt;/code&gt;), namun TestSprite dalam test generation-nya default ke format &lt;strong&gt;MM/DD/YYYY&lt;/strong&gt; ala Amerika.&lt;/p&gt;

&lt;p&gt;Ini jadi masalah ketika test melibatkan:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Form input dengan date field&lt;/li&gt;
&lt;li&gt;Validasi format tanggal&lt;/li&gt;
&lt;li&gt;API response yang mengandung timestamp&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Contoh konkret&lt;/strong&gt;: Test mengisi form dengan &lt;code&gt;01/05/2025&lt;/code&gt; — TestSprite menginterpretasikan sebagai &lt;em&gt;1 Mei 2025&lt;/em&gt; (US format), padahal dalam konteks Indonesia harusnya &lt;em&gt;5 Januari 2025&lt;/em&gt;. Test bisa pass tapi dengan data yang salah.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rekomendasi&lt;/strong&gt;: Tambahkan instruksi eksplisit di test configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"date_format": "DD/MM/YYYY",
"locale": "id-ID"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ⚠️ Observasi 2: Format Angka dan Mata Uang IDR
&lt;/h3&gt;

&lt;p&gt;Indonesia menggunakan &lt;strong&gt;titik (.) sebagai pemisah ribuan&lt;/strong&gt; dan &lt;strong&gt;koma (,) sebagai pemisah desimal&lt;/strong&gt; — kebalikan dari format internasional standar.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Format&lt;/th&gt;
&lt;th&gt;Indonesia&lt;/th&gt;
&lt;th&gt;International&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1.5 juta&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1.500.000,00&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1,500,000.00&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mata uang&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Rp 1.500.000&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;IDR 1,500,000&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Ketika test melibatkan input atau validasi nilai Rupiah, TestSprite menggunakan pola internasional. Akibatnya, nilai &lt;code&gt;1.500.000&lt;/code&gt; bisa dianggap tidak valid karena dianggap sebagai &lt;code&gt;1.5&lt;/code&gt; (satu koma lima).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solusi&lt;/strong&gt;: Gunakan custom assertions dengan &lt;code&gt;Intl.NumberFormat("id-ID", { style: "currency", currency: "IDR" })&lt;/code&gt; sebagai referensi expected value.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✅ Observasi 3: Input Non-ASCII Bahasa Indonesia
&lt;/h3&gt;

&lt;p&gt;Kabar baiknya, TestSprite menangani teks Bahasa Indonesia dengan baik. Tidak ada encoding issues dengan karakter-karakter umum dalam Bahasa Indonesia.&lt;/p&gt;

&lt;h3&gt;
  
  
  ⚠️ Observasi 4: Timezone Indonesia (WIB/WITA/WIT)
&lt;/h3&gt;

&lt;p&gt;Indonesia memiliki 3 zona waktu. TestSprite default ke UTC di cloud sandbox. Untuk aplikasi yang menampilkan waktu lokal Indonesia, perlu set environment variable:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;TZ=Asia/Jakarta  # WIB UTC+7
TZ=Asia/Makassar # WITA UTC+8  
TZ=Asia/Jayapura # WIT UTC+9
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Kekurangan yang Perlu Diperhatikan
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Locale awareness masih terbatas&lt;/strong&gt;: Seperti yang sudah dibahas, TestSprite belum native support format Indonesia untuk tanggal, angka, dan currency. Butuh konfigurasi manual.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Semua di cloud&lt;/strong&gt;: Tidak bisa run offline. Untuk project dengan data sensitif, perlu evaluasi keamanan sebelum digunakan.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Free tier terbatas&lt;/strong&gt;: 150 credits habis cukup cepat untuk project yang lebih besar. Perlu upgrade untuk production use.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dokumentasi untuk advanced config&lt;/strong&gt;: Masih bisa lebih lengkap, terutama untuk skenario locale-specific.&lt;/p&gt;




&lt;h2&gt;
  
  
  Kesimpulan
&lt;/h2&gt;

&lt;p&gt;TestSprite adalah tool yang genuinely berguna untuk mempercepat test automation — terutama untuk developer yang tidak punya background QA dedicated. Speed dan ease of use-nya luar biasa.&lt;/p&gt;

&lt;p&gt;Untuk developer Indonesia yang bekerja dengan data lokal (tanggal, mata uang IDR, timezone WIB/WITA/WIT), perlu &lt;strong&gt;extra attention pada locale configuration&lt;/strong&gt;. Tanpa konfigurasi tepat, test bisa memberikan hasil misleading untuk fitur yang melibatkan format data Indonesia.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rating: 7.5/10&lt;/strong&gt; — Sangat recommended untuk project dengan audience internasional. Untuk project Indonesia-specific, siapkan waktu ekstra untuk locale setup.&lt;/p&gt;

&lt;p&gt;Coba gratis di &lt;a href="https://testsprite.com" rel="noopener noreferrer"&gt;testsprite.com&lt;/a&gt; — free tier cukup untuk evaluasi.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Testing environment: TestSprite Web Portal + JSONPlaceholder REST API&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Tanggal review: Mei 2026&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Platform: TestSprite cloud sandbox, Free tier (150 credits)&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  testing #javascript #indonesia #devtools #testautomation #ai #qualityassurance
&lt;/h1&gt;

</description>
      <category>testing</category>
      <category>javascript</category>
      <category>indonesia</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Review Jujur OKX: Platform Crypto Terbaik untuk Trader Indonesia di 2025</title>
      <dc:creator>Miftah Eto</dc:creator>
      <pubDate>Fri, 01 May 2026 13:54:22 +0000</pubDate>
      <link>https://dev.to/miftah_eto_328/review-jujur-okx-platform-crypto-terbaik-untuk-trader-indonesia-di-2025-2peo</link>
      <guid>https://dev.to/miftah_eto_328/review-jujur-okx-platform-crypto-terbaik-untuk-trader-indonesia-di-2025-2peo</guid>
      <description>&lt;p&gt;Sebagai trader crypto yang sudah aktif sejak 2019, saya telah mencoba banyak exchange — dari yang lokal hingga internasional. Dalam beberapa bulan terakhir, saya secara serius menggunakan &lt;strong&gt;OKX&lt;/strong&gt; sebagai platform utama saya, dan saya ingin berbagi pengalaman jujur tentang platform ini khusus dari sudut pandang pengguna Indonesia.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Disclosure:&lt;/strong&gt; Artikel ini mengandung referral link. Jika kamu daftar melalui link saya, kita berdua mendapat keuntungan. #ad&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Apa Itu OKX?
&lt;/h2&gt;

&lt;p&gt;OKX adalah salah satu cryptocurrency exchange terbesar di dunia berdasarkan volume trading, dengan lebih dari 50 juta pengguna di 180+ negara. Didirikan pada 2017, OKX telah berkembang jauh melampaui sekedar exchange — sekarang mereka adalah &lt;strong&gt;ekosistem Web3 lengkap&lt;/strong&gt; yang mencakup trading spot, futures, DeFi, NFT, dan wallet self-custody.&lt;/p&gt;




&lt;h2&gt;
  
  
  Yang OKX Lakukan dengan Sangat Baik
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Trading UI yang Intuitif tapi Powerful
&lt;/h3&gt;

&lt;p&gt;Salah satu hal pertama yang saya perhatikan ketika pindah ke OKX adalah betapa &lt;strong&gt;bersih dan responsif&lt;/strong&gt; interface-nya. Berbeda dengan beberapa exchange lain yang terasa overwhelming dengan terlalu banyak widget, OKX berhasil menyeimbangkan antara simplicity untuk pemula dan depth untuk trader advanced.&lt;/p&gt;

&lt;p&gt;Chart-nya menggunakan TradingView yang sudah industry standard, order book real-time, dan semua tool analisis teknikal yang dibutuhkan sudah tersedia tanpa perlu plugin tambahan. Untuk trader Indonesia yang biasanya multitasking di mobile, aplikasi OKX juga sangat solid — jarang lag bahkan di kondisi market volatile.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. OKX Wallet — Self-Custody yang Serius
&lt;/h3&gt;

&lt;p&gt;Ini yang membedakan OKX dari kebanyakan exchange: mereka punya &lt;strong&gt;OKX Wallet&lt;/strong&gt; yang merupakan non-custodial wallet terintegrasi langsung ke dalam ekosistem mereka.&lt;/p&gt;

&lt;p&gt;Kenapa ini penting untuk pengguna Indonesia? Karena banyak dari kita yang sudah "sadar security" setelah berbagai insiden exchange collapse di industri ini. Dengan OKX Wallet, kamu bisa hold aset di luar exchange sambil tetap bisa akses DeFi, swap multi-chain, dan bridge antar blockchain — semua dari satu interface.&lt;/p&gt;

&lt;p&gt;Wallet-nya support 80+ blockchain, termasuk Ethereum, BNB Chain, Solana, dan banyak lagi. Built-in bridge-nya juga kompetitif dari sisi fee dibanding tools external.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. OKX Pay — Solusi On/Off Ramp yang Lebih Mudah
&lt;/h3&gt;

&lt;p&gt;Salah satu pain point terbesar pengguna Indonesia di crypto adalah &lt;strong&gt;proses deposit dan withdraw fiat&lt;/strong&gt;. OKX Pay hadir sebagai solusi yang cukup menjawab masalah ini.&lt;/p&gt;

&lt;p&gt;Meskipun belum sempurna untuk Indonesia (kita tidak punya integrasi bank lokal selengkap exchange domestik seperti Indodax), OKX Pay memungkinkan transaksi P2P yang liquid dengan berbagai payment method. Spread P2P-nya juga kompetitif, dan saya jarang menunggu lebih dari 5-10 menit untuk transaksi selesai.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Jumpstart — Akses ke Token Baru yang Potensial
&lt;/h3&gt;

&lt;p&gt;Untuk yang suka early adoption, fitur &lt;strong&gt;Jumpstart&lt;/strong&gt; OKX adalah salah satu yang terbaik di industri. Ini adalah platform launchpad mereka di mana kamu bisa berpartisipasi dalam token sale / IEO proyek-proyek baru yang sudah dikurasi oleh tim OKX.&lt;/p&gt;

&lt;p&gt;Kualitas proyeknya bervariasi (seperti launchpad mana pun), tapi track record OKX dalam memilih proyek cukup baik dibanding kompetitor. Syaratnya cukup mudah: hold OKB (native token OKX) dan daftar dalam periode subscription.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Fee yang Kompetitif
&lt;/h3&gt;

&lt;p&gt;Fee spot trading OKX mulai dari &lt;strong&gt;0.08% maker / 0.10% taker&lt;/strong&gt; untuk pengguna reguler, dan bisa turun signifikan kalau kamu hold OKB atau punya volume trading tinggi. Ini termasuk kompetitif di industri.&lt;/p&gt;




&lt;h2&gt;
  
  
  Kekurangan yang Perlu Kamu Tahu
&lt;/h2&gt;

&lt;p&gt;Saya tidak ingin menulis review yang hanya memuji. Ada beberapa hal yang perlu dipertimbangkan:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Regulasi Indonesia&lt;/strong&gt;: OKX tidak memiliki lisensi resmi dari Bappebti di Indonesia. Ini berarti secara teknis penggunaan OKX berada di "grey area" regulasi. Pengguna perlu sadar akan hal ini dan memahami konsekuensinya.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;KYC yang Ketat&lt;/strong&gt;: Proses verifikasi identitas OKX cukup panjang untuk level KYC tertinggi. Ini memang standar exchange tier-1, tapi perlu disiapkan dokumen dengan benar.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Customer Support&lt;/strong&gt;: Response time support bisa lambat di jam-jam sibuk. Untuk masalah teknis kritis, kadang perlu beberapa jam mendapatkan jawaban yang memuaskan.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fitur Fiat Terbatas di Indonesia&lt;/strong&gt;: Dibanding exchange lokal, kemampuan deposit/withdraw langsung ke rekening bank Indonesia lebih terbatas. Kamu masih butuh workaround via P2P atau exchange lokal sebagai bridge.&lt;/p&gt;




&lt;h2&gt;
  
  
  Untuk Siapa OKX Cocok di Indonesia?
&lt;/h2&gt;

&lt;p&gt;Berdasarkan pengalaman saya, OKX paling cocok untuk:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Trader aktif&lt;/strong&gt; yang butuh akses ke banyak pair dengan likuiditas tinggi&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DeFi enthusiast&lt;/strong&gt; yang ingin self-custody tapi tetap nyaman&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Investor yang ingin diversifikasi&lt;/strong&gt; ke altcoin yang belum listing di exchange lokal&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Yang serius dengan futures/derivatives&lt;/strong&gt; — tools-nya sangat lengkap&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mungkin kurang cocok untuk &lt;strong&gt;pemula total&lt;/strong&gt; yang baru masuk crypto dan belum familiar dengan konsep wallet, private key, dll.&lt;/p&gt;




&lt;h2&gt;
  
  
  Cara Daftar dan Mulai
&lt;/h2&gt;

&lt;p&gt;Kalau kamu tertarik mencoba OKX, kamu bisa daftar melalui link referral ini untuk mendapatkan bonus welcome:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://www.okx.com/join?channelId=ACE532295" rel="noopener noreferrer"&gt;https://www.okx.com/join?channelId=ACE532295&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Atau gunakan kode referral: &lt;strong&gt;ACE532295&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Prosesnya cukup straightforward:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Daftar dengan email atau nomor telepon&lt;/li&gt;
&lt;li&gt;Selesaikan KYC Level 1&lt;/li&gt;
&lt;li&gt;Deposit via P2P atau transfer crypto&lt;/li&gt;
&lt;li&gt;Mulai trading&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Kesimpulan
&lt;/h2&gt;

&lt;p&gt;OKX adalah platform yang solid untuk trader dan investor crypto yang sudah berpengalaman di Indonesia. Ekosistemnya lengkap, UI-nya bagus, dan fitur-fiturnya terus berkembang. Namun, keterbatasan regulasi lokal dan kurangnya integrasi fiat langsung adalah trade-off yang perlu dipahami.&lt;/p&gt;

&lt;p&gt;Rating saya: &lt;strong&gt;8/10&lt;/strong&gt; — Sangat direkomendasikan untuk yang sudah paham risiko crypto dan butuh akses ke ekosistem yang lebih luas dari yang ditawarkan exchange lokal.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Artikel ini bukan financial advice. Investasi crypto mengandung risiko tinggi. Lakukan riset sendiri sebelum berinvestasi.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  ad #OKX #CryptoIndonesia #Blockchain #Web3 #DeFi
&lt;/h1&gt;

</description>
      <category>crypto</category>
      <category>blockchain</category>
      <category>indonesia</category>
      <category>fintech</category>
    </item>
  </channel>
</rss>
