Benchmarks
Plugin footprint 82% from 16 tests
Installer Passed 1 test
🔺 Critical test (weight: 50) | The install procedure must perform silently
The plugin installed gracefully, with no errors
Server metrics [RAM: ▲1.48MB] [CPU: ▲8.33ms] 75% from 4 tests
An overview of server-side resources used by FooSales — Point of Sale (POS) for WooCommerce
Please have a look at the following items
- CPU: Total CPU usage must kept under 500.00ms (currently 3,198.81ms on /wp-admin/admin.php?page=foosales-settings)
Page | Memory (MB) | CPU Time (ms) |
---|---|---|
Home / | 4.90 ▲1.44 | 45.19 ▲5.55 |
Dashboard /wp-admin | 4.83 ▲1.48 | 57.21 ▼0.23 |
Posts /wp-admin/edit.php | 4.84 ▲1.48 | 61.38 ▲13.70 |
Add New Post /wp-admin/post-new.php | 7.48 ▲1.59 | 111.67 ▲14.30 |
Media Library /wp-admin/upload.php | 4.75 ▲1.52 | 51.12 ▲17.01 |
Settings /wp-admin/admin.php?page=foosales-settings | 4.70 | 3,198.81 |
Import /wp-admin/admin.php?page=foosales-import | 4.59 | 42.82 |
Server storage [IO: ▲7.31MB] [DB: ▲0.01MB] Passed 3 tests
Input-output and database impact of this plugin
This plugin installed successfully
Filesystem: 382 new files
Database: 3 new tables, 14 new options
New tables |
---|
wp_foosales_square_devices |
wp_foosales_square_refunds |
wp_foosales_square_checkouts |
New WordPress options |
---|
widget_theysaidso_widget |
db_upgraded |
widget_recent-posts |
foosales_db_square_devices |
recovery_mode_email_last_sent |
globalFooSalesSalt |
foosales_db_square_refunds |
can_compress_scripts |
foosales_db_square_checkouts |
globalFooSalesAnalyticsOptIn |
... |
Browser metrics Passed 4 tests
This is an overview of browser requirements for FooSales — Point of Sale (POS) for WooCommerce
There were no issues detected in relation to browser resource usage
Page | Nodes | Memory (MB) | Script (ms) | Layout (ms) |
---|---|---|---|---|
Home / | 2,863 ▲117 | 13.56 ▼0.79 | 5.56 ▲4.07 | 38.21 ▼2.18 |
Dashboard /wp-admin | 2,269 ▲88 | 5.76 ▲0.10 | 91.54 ▼9.96 | 37.89 ▼6.43 |
Posts /wp-admin/edit.php | 2,174 ▲74 | 2.27 ▲0.25 | 39.95 ▲4.77 | 35.99 ▼4.36 |
Add New Post /wp-admin/post-new.php | 1,568 ▲40 | 23.48 ▲0.31 | 623.81 ▼48.04 | 58.76 ▲5.59 |
Media Library /wp-admin/upload.php | 1,469 ▲72 | 4.33 ▲0.14 | 98.90 ▼1.80 | 41.68 ▼1.80 |
Settings /wp-admin/admin.php?page=foosales-settings | 741 | 1.52 | 10.94 | 23.25 |
Import /wp-admin/admin.php?page=foosales-import | 729 | 1.53 | 7.64 | 16.33 |
Uninstaller [IO: ▲0.00MB] [DB: ▲0.00MB] 75% from 4 tests
🔸 Tests weight: 35 | It is important to correctly uninstall your plugin, without leaving any traces
You still need to fix the following
- Zombie WordPress options detected upon uninstall: 8 options
- widget_recent-posts
- recovery_mode_email_last_sent
- widget_theysaidso_widget
- can_compress_scripts
- db_upgraded
- foosales_cashier_role_version
- widget_recent-comments
- theysaidso_admin_options
Smoke tests 50% from 4 tests
Server-side errors 0% from 1 test
🔹 Test weight: 20 | A shallow check that no server-side errors were triggered
These server-side errors were triggered
- > GET request to /wp-admin/admin.php?page=foosales-settings
- > Error in wp-content/plugins/foosales/helpers/foosales-api-helper.php+4572
Uncaught Error: Call to undefined function wc_get_order_statuses() in wp-content/plugins/foosales/helpers/foosales-api-helper.php:4572
Stack trace:
#0 wp-content/plugins/foosales/classes/class-foosales.php(427): fsfwc_get_all_order_statuses()
#1 wp-includes/class-wp-hook.php(310): FooSales->fsfwc_display_settings_page()
#2 wp-includes/class-wp-hook.php(334): WP_Hook->apply_filters()
#3 wp-includes/plugin.php(517): WP_Hook->do_action()
#4 wp-admin/admin.php(259): do_action()
#5 {main}
thrown- > GET request to /wp-admin/admin.php?page=foosales-import
- > Error in wp-content/plugins/foosales/helpers/foosales-api-helper.php+4572
Uncaught Error: Call to undefined function wc_get_order_statuses() in wp-content/plugins/foosales/helpers/foosales-api-helper.php:4572
Stack trace:
#0 wp-content/plugins/foosales/classes/class-foosales.php(1681): fsfwc_get_all_order_statuses()
#1 wp-includes/class-wp-hook.php(310): FooSales->fsfwc_add_foosales_import_page()
#2 wp-includes/class-wp-hook.php(334): WP_Hook->apply_filters()
#3 wp-includes/plugin.php(517): WP_Hook->do_action()
#4 wp-admin/admin.php(259): do_action()
#5 {main}
thrown
SRP 50% from 2 tests
🔹 Tests weight: 20 | SRP (Single-Responsibility Principle) - PHP files must act as libraries and never output text or perform any action when accessed directly in a browser
Please fix the following
- 259× PHP files trigger server-side errors or warnings when accessed directly (only 10 are shown):
- > PHP Fatal error
Uncaught Error: Class 'FooSales\\Stripe\\Exception\\OAuth\\OAuthErrorException' not found in wp-content/plugins/foosales/vendor/stripe-php/lib/Exception/OAuth/UnknownOAuthErrorException.php:10
- > PHP Fatal error
Uncaught Error: Class 'FooSales\\Stripe\\ApiResource' not found in wp-content/plugins/foosales/vendor/stripe-php/lib/FinancialConnections/Session.php:21
- > PHP Fatal error
Uncaught Error: Interface 'FooSales\\Stripe\\Exception\\ExceptionInterface' not found in wp-content/plugins/foosales/vendor/stripe-php/lib/Exception/ApiErrorException.php:8
- > PHP Fatal error
Uncaught Error: Class 'FooSales\\Stripe\\Service\\AbstractServiceFactory' not found in wp-content/plugins/foosales/vendor/stripe-php/lib/Service/Apps/AppsServiceFactory.php:12
- > PHP Fatal error
Uncaught Error: Class 'FooSales\\Stripe\\Service\\AbstractService' not found in wp-content/plugins/foosales/vendor/stripe-php/lib/Service/TestHelpers/Issuing/TransactionService.php:7
- > PHP Fatal error
Uncaught Error: Class 'FooSales\\Stripe\\Service\\AbstractService' not found in wp-content/plugins/foosales/vendor/stripe-php/lib/Service/TestHelpers/Treasury/OutboundTransferService.php:7
- > PHP Fatal error
Uncaught Error: Class 'FooSales\\Stripe\\Service\\AbstractService' not found in wp-content/plugins/foosales/vendor/stripe-php/lib/Service/CouponService.php:7
- > PHP Fatal error
Uncaught Error: Interface 'FooSales\\Stripe\\Exception\\ExceptionInterface' not found in wp-content/plugins/foosales/vendor/stripe-php/lib/Exception/InvalidArgumentException.php:5
- > PHP Fatal error
Uncaught Error: Class 'FooSales\\Stripe\\ApiResource' not found in wp-content/plugins/foosales/vendor/stripe-php/lib/BalanceTransaction.php:29
- > PHP Fatal error
Uncaught Error: Class 'FooSales\\Stripe\\ApiResource' not found in wp-content/plugins/foosales/vendor/stripe-php/lib/Customer.php:41
- > PHP Fatal error
User-side errors Passed 1 test
🔹 Test weight: 20 | This is a shallow check for browser errors
No browser errors were detected
Optimizations
Plugin configuration 93% from 29 tests
readme.txt 94% from 16 tests
Often overlooked, readme.txt is one of the most important files in your plugin
These attributes need your attention:
- Screenshots: These screenshots require images: #1 (Add a product to the cart by selecting it from the list or by scanning its barcode.), #2 (Checkout to complete the order.), #3 (Create profiles for your customers so that you can learn more about their shopping habits and view contact info and order history at a glance.), #4 (View your sales history, cancel completed orders and print receipts), #5 (FooSales POS can be accessed from an unlimited number of devices and is available as a web app and native tablets apps (iPad & Android tablet).)
foosales/foosales.php 92% from 13 tests
The primary PHP file in "FooSales — Point of Sale (POS) for WooCommerce" version 1.37.3 is used by WordPress to initiate all plugin functionality
You should first fix the following items:
- Description: Keep the plugin description shorter than 140 characters (currently 372 characters long)
Code Analysis 5% from 3 tests
File types 0% from 1 test
🔸 Test weight: 35 | This is an overview of file extensions present in this plugin and a short test that no dangerous files are bundled with this plugin
Please make sure to remedy the following
- For security reasons, never distribute binary or executable files with your plugin
- .crt - Security Certificate in Firefox, IE, Chrome, Safari
- ☣ wp-content/plugins/foosales/vendor/stripe-php/data/ca-certificates.crt
- .crt - Security Certificate in Firefox, IE, Chrome, Safari
Language | Files | Blank lines | Comment lines | Lines of code |
---|---|---|---|---|
PO File | 28 | 13,328 | 13,300 | 28,224 |
PHP | 308 | 4,896 | 13,900 | 17,239 |
CSS | 2 | 0 | 0 | 334 |
JavaScript | 4 | 34 | 4 | 184 |
Markdown | 2 | 39 | 0 | 110 |
PHP code Passed 2 tests
This is a short overview of cyclomatic complexity and code structure for this plugin
No complexity issues detected
Cyclomatic complexity | |
---|---|
Average complexity per logical line of code | 0.24 |
Average class complexity | 3.83 |
▷ Minimum class complexity | 1.00 |
▷ Maximum class complexity | 235.00 |
Average method complexity | 1.81 |
▷ Minimum method complexity | 1.00 |
▷ Maximum method complexity | 57.00 |
Code structure | ||
---|---|---|
Namespaces | 36 | |
Interfaces | 9 | |
Traits | 9 | |
Classes | 281 | |
▷ Abstract classes | 10 | 3.56% |
▷ Concrete classes | 271 | 96.44% |
▷ Final classes | 0 | 0.00% |
Methods | 998 | |
▷ Static methods | 188 | 18.84% |
▷ Public methods | 912 | 91.38% |
▷ Protected methods | 41 | 4.11% |
▷ Private methods | 45 | 4.51% |
Functions | 98 | |
▷ Named functions | 77 | 78.57% |
▷ Anonymous functions | 21 | 21.43% |
Constants | 1,502 | |
▷ Global constants | 2 | 0.13% |
▷ Class constants | 1,500 | 99.87% |
▷ Public constants | 1,500 | 100.00% |
Plugin size 50% from 2 tests
Image compression 50% from 2 tests
All PNG images should be compressed to minimize bandwidth usage for end users
6 PNG files occupy 1.13MB with 0.68MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant | |||
---|---|---|---|
File | Size - original | Size - compressed | Savings |
screenshot-1.png | 241.93KB | 82.49KB | ▼ 65.90% |
screenshot-3.png | 208.30KB | 87.55KB | ▼ 57.97% |
screenshot-2.png | 213.97KB | 87.58KB | ▼ 59.07% |
screenshot-4.png | 263.77KB | 91.72KB | ▼ 65.23% |
images/foosales-favicon.png | 7.16KB | 3.59KB | ▼ 49.90% |