{"id":253980,"date":"2025-10-28T10:40:59","date_gmt":"2025-10-28T10:40:59","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/dev-testing-utilities\/"},"modified":"2026-08-23T15:42:47","modified_gmt":"2026-08-23T15:42:47","slug":"yuva-testing-utilities","status":"publish","type":"plugin","link":"https:\/\/fa.wordpress.org\/plugins\/yuva-testing-utilities\/","author":23364667,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.7","stable_tag":"trunk","tested":"7.1","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"Yuva Testing Utilities","header_author":"Yuvaraj","header_description":"Developer-focused testing utilities.","assets_banners_color":"","last_updated":"2026-08-23 15:42:47","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/yuva-testing-utilities\/","header_author_uri":"https:\/\/profiles.wordpress.org\/theyuvarajs\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":910,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"theyuvarajs","date":"2025-10-29 15:12:17"},"1.1.0":{"tag":"1.1.0","author":"theyuvarajs","date":"2025-11-08 03:46:20"},"1.1.1":{"tag":"1.1.1","author":"theyuvarajs","date":"2025-11-08 16:23:31"},"1.2.0":{"tag":"1.2.0","author":"theyuvarajs","date":"2026-01-26 16:31:14"},"1.2.1":{"tag":"1.2.1","author":"theyuvarajs","date":"2026-01-27 16:27:42"},"1.2.2":{"tag":"1.2.2","author":"theyuvarajs","date":"2026-03-31 17:54:25"},"1.2.3":{"tag":"1.2.3","author":"theyuvarajs","date":"2026-04-19 07:05:59"}},"upgrade_notice":{"1.2.7":"<p>Fixes test-order statuses, Auto-Fill state selection, and HPOS order links, and declares High Performance Order Storage compatibility. Recommended for all users.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3392218,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3392218,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon-512x512.png":{"filename":"icon-512x512.png","revision":3392218,"resolution":"512x512","location":"assets","locale":"","width":512,"height":512}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.1.0","1.1.1","1.2.0","1.2.1","1.2.2","1.2.3"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[4932,19979,1591,4351,286],"plugin_category":[45],"plugin_contributors":[249859],"plugin_business_model":[],"class_list":["post-253980","plugin","type-plugin","status-publish","hentry","plugin_tags-developer-tools","plugin_tags-staging","plugin_tags-testing","plugin_tags-utilities","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-theyuvarajs","plugin_committers-theyuvarajs"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/yuva-testing-utilities\/assets\/icon-128x128.png?rev=3392218","icon_2x":"https:\/\/ps.w.org\/yuva-testing-utilities\/assets\/icon-256x256.png?rev=3392218","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Yuva Testing Utilities is built for developers and testers who want quick, lightweight tools inside the WordPress admin \u2014 no bloat, no complicated setup.<\/p>\n\n<p>Best used in <strong>local<\/strong> or <strong>staging<\/strong> environments where you frequently test emails, checkout flows, or need to clean up database content without touching production.<\/p>\n\n<p><strong>Modules:<\/strong><\/p>\n\n<ul>\n<li><strong>Emails<\/strong> \u2014 Configure SMTP, log and preview outgoing emails, send test emails.<\/li>\n<li><strong>Auto-Fill<\/strong> \u2014 Fill the WooCommerce checkout with random user data on every click. Supports classic and Blocks checkout.<\/li>\n<li><strong>Downloader<\/strong> \u2014 Download any installed plugin or theme as a .zip, or export the WooCommerce sample products CSV.<\/li>\n<li><strong>Database<\/strong> \u2014 Inspect and clean up post types, database options, post meta, and user meta.<\/li>\n<li><strong>Test Data<\/strong> \u2014 Generate and delete test users, WooCommerce orders, and coupons.<\/li>\n<li><strong>Tools<\/strong> \u2014 Manage transients, view and trigger cron jobs, tail log files, inspect PHP constants, and view server info.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<ul>\n<li><strong>RandomUser.me<\/strong> (<code>https:\/\/randomuser.me\/api\/<\/code>) \u2014 used by the Auto-Fill module to generate random placeholder user data for the checkout. The request is made only when the module is enabled and a visitor clicks the autofill button. No personal or site data is sent. Service terms and privacy policy: https:\/\/randomuser.me\/<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/yuva-testing-utilities\/<\/code><\/li>\n<li>Activate the plugin from <strong>Plugins \u2192 Installed Plugins<\/strong><\/li>\n<li>Open <strong>Tools \u2192 Testing Utilities<\/strong><\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20this%20plugin%20meant%20for%20production%3F\"><h3>Is this plugin meant for production?<\/h3><\/dt>\n<dd><p>It can run on production but is primarily designed for <strong>development and staging<\/strong> environments.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20send%20any%20data%20externally%3F\"><h3>Does this plugin send any data externally?<\/h3><\/dt>\n<dd><p>One feature does: <strong>Auto-Fill<\/strong> calls RandomUser.me to fetch placeholder user data, and only while that module is enabled. No personal or site data is sent, and it falls back to locally generated data when the service is unreachable. Nothing else in the plugin contacts the internet \u2014 the WooCommerce sample products CSV is read from the copy of WooCommerce already installed on your site.<\/p><\/dd>\n<dt id=\"why%20does%20the%20plugin%20require%20wordpress%206.2%3F\"><h3>Why does the plugin require WordPress 6.2?<\/h3><\/dt>\n<dd><p>The plugin uses the <code>%i<\/code> (identifier) placeholder in <code>$wpdb-&gt;prepare()<\/code>, introduced in WordPress 6.2, to safely parameterise table and column names.<\/p><\/dd>\n<dt id=\"who%20can%20use%20the%20plugin%3F\"><h3>Who can use the plugin?<\/h3><\/dt>\n<dd><p>Any administrator (<code>manage_options<\/code>). This is a developer toolkit, so access is intentionally not restricted beyond that. If you do want it locked down further, filter <code>yutu_required_capability<\/code>.<\/p><\/dd>\n<dt id=\"the%20database%20module%20edited%20an%20option%20and%20something%20broke.%20why%3F\"><h3>The Database module edited an option and something broke. Why?<\/h3><\/dt>\n<dd><p>Option and meta values are edited as plain text. If the stored value was a serialised array or object, saving it as text replaces the structure with a string. Only edit values you know are scalar, and always on a site you can restore.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.7<\/h4>\n\n<ul>\n<li>Fix - Test orders set to \"Completed\" or \"Cancelled\" were created as Pending.<\/li>\n<li>Fix - The \"Random\" customer country wrote <code>RANDOM<\/code> into generated order addresses.<\/li>\n<li>Fix - Auto-Fill left the checkout State field empty for countries with a state dropdown.<\/li>\n<li>Fix - Generated orders reused the same few products instead of picking randomly.<\/li>\n<li>Fix - Test Data order links did not work with High Performance Order Storage.<\/li>\n<li>Fix - Log Viewer, Constants, Server Info, and the email preview showed HTML entities instead of real characters.<\/li>\n<li>Fix - Test Data order totals rendered raw HTML markup.<\/li>\n<li>Fix - SMTP forced authentication with no username set, breaking local mail catchers such as Mailpit and MailHog.<\/li>\n<li>Fix - Downloading a large plugin or theme exhausted PHP's memory limit.<\/li>\n<li>Update - Declared High Performance Order Storage and Cart &amp; Checkout Blocks compatibility.<\/li>\n<li>Update - Cron \"Run Now\" now passes each event's stored arguments.<\/li>\n<li>Update - Uninstalling now removes the plugin's options and email log table.<\/li>\n<li>Update - The plugin no longer activates on PHP or WordPress versions below its minimum requirements, and explains why instead of failing.<\/li>\n<li>Update - The WooCommerce sample products CSV is now read from the installed copy of WooCommerce instead of being downloaded from GitHub.<\/li>\n<\/ul>\n\n<h4>1.2.6<\/h4>\n\n<ul>\n<li>Update - Supported coupon code prefix option.<\/li>\n<li>Update - Generated test data IDs are now clickable through to their edit screens.<\/li>\n<li>Fix - Compatibility with the minimum supported PHP 7.4.<\/li>\n<\/ul>\n\n<h4>1.2.4<\/h4>\n\n<ul>\n<li>Renamed Cleanup module to Database; added User Meta tab.<\/li>\n<li>Added Test Data module with generators for users, WooCommerce orders, products, and coupons.<\/li>\n<li>Fixed Auto-Fill not populating fields on WooCommerce Checkout Blocks.<\/li>\n<\/ul>\n\n<h4>1.2.3<\/h4>\n\n<ul>\n<li>Added Downloader module.<\/li>\n<li>Added Developer Tools module (transients, cron viewer, log viewer, user generator).<\/li>\n<li>Added SMTP migration for legacy flat option keys.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Added email logging.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added cleanup tools.<\/li>\n<li>Moved Testing Utilities menu under Tools.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Developer and tester toolkit for WordPress and WooCommerce. Fast, lightweight tools inside the admin for common local and staging tasks.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/253980","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=253980"}],"author":[{"embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/theyuvarajs"}],"wp:attachment":[{"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=253980"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=253980"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=253980"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=253980"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=253980"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=253980"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}