Benchmarks
Plugin footprint 65% 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: ▲0.67MB] [CPU: ▼3.71ms] Passed 4 tests
A check of server-side resources used by Perfecty Push Notifications
No issues were detected with server-side resource usage
Page | Memory (MB) | CPU Time (ms) |
---|---|---|
Home / | 4.10 ▲0.64 | 44.57 ▲5.33 |
Dashboard /wp-admin | 4.01 ▲0.66 | 55.10 ▼2.61 |
Posts /wp-admin/edit.php | 4.12 ▲0.76 | 59.96 ▲12.71 |
Add New Post /wp-admin/post-new.php | 6.59 ▲0.70 | 90.97 ▼24.09 |
Media Library /wp-admin/upload.php | 3.90 ▲0.67 | 41.41 ▲6.54 |
Logs /wp-admin/admin.php?page=perfecty-push-logs | 3.90 | 39.92 |
Settings /wp-admin/admin.php?page=perfecty-push-options | 3.90 | 40.24 |
Users /wp-admin/admin.php?page=perfecty-push-users | 3.91 | 43.33 |
Send notification /wp-admin/admin.php?page=perfecty-push-send-notification | 3.92 | 42.25 |
About /wp-admin/admin.php?page=perfecty-push-about | 3.90 | 40.73 |
Dashboard /wp-admin/admin.php?page=perfecty-push | 3.94 | 40.24 |
Notification jobs /wp-admin/admin.php?page=perfecty-push-notifications | 3.91 | 43.30 |
Server storage [IO: ▲2.98MB] [DB: ▲0.00MB] Passed 3 tests
A short overview of filesystem and database impact
The plugin installed successfully
Filesystem: 685 new files
Database: 3 new tables, 10 new options
New tables |
---|
wp_perfecty_push_notifications |
wp_perfecty_push_logs |
wp_perfecty_push_users |
New WordPress options |
---|
perfecty_push_version |
widget_recent-comments |
db_upgraded |
perfecty_push_activated |
can_compress_scripts |
perfecty_push |
widget_recent-posts |
perfecty_push_db_version |
widget_theysaidso_widget |
theysaidso_admin_options |
Browser metrics Passed 4 tests
This is an overview of browser requirements for Perfecty Push Notifications
This plugin renders optimally with no browser resource issues detected
Page | Nodes | Memory (MB) | Script (ms) | Layout (ms) |
---|---|---|---|---|
Home / | 3,044 ▲298 | 15.01 ▲0.63 | 3.83 ▲2.10 | 36.37 ▼8.02 |
Dashboard /wp-admin | 2,443 ▲255 | 6.63 ▲1.77 | 140.23 ▲35.01 | 44.20 ▲0.59 |
Posts /wp-admin/edit.php | 2,349 ▲257 | 3.54 ▲1.57 | 49.82 ▲4.46 | 31.71 ▼8.34 |
Add New Post /wp-admin/post-new.php | 6,300 ▲4,781 | 18.93 ▼4.19 | 866.97 ▲193.40 | 40.47 ▼19.19 |
Media Library /wp-admin/upload.php | 1,491 ▲103 | 4.21 ▼0.02 | 85.33 ▼21.26 | 44.88 ▼0.77 |
Logs /wp-admin/admin.php?page=perfecty-push-logs | 1,044 | 3.18 | 44.56 | 23.86 |
Settings /wp-admin/admin.php?page=perfecty-push-options | 1,361 | 3.19 | 44.15 | 35.13 |
Users /wp-admin/admin.php?page=perfecty-push-users | 1,187 | 3.19 | 43.36 | 25.31 |
Send notification /wp-admin/admin.php?page=perfecty-push-send-notification | 1,296 | 3.20 | 43.97 | 22.01 |
About /wp-admin/admin.php?page=perfecty-push-about | 1,091 | 3.24 | 40.17 | 66.63 |
Dashboard /wp-admin/admin.php?page=perfecty-push | 1,166 | 4.89 | 131.05 | 25.69 |
Notification jobs /wp-admin/admin.php?page=perfecty-push-notifications | 1,261 | 3.19 | 44.86 | 25.28 |
Uninstaller [IO: ▲0.00MB] [DB: ▲0.00MB] 50% from 4 tests
🔸 Tests weight: 35 | Verifying that this plugin uninstalls completely without leaving any traces
You still need to fix the following
- Zombie tables were found after uninstall: 3 tables
- wp_perfecty_push_notifications
- wp_perfecty_push_logs
- wp_perfecty_push_users
- This plugin does not fully uninstall, leaving 9 options in the database
- db_upgraded
- perfecty_push_version
- widget_theysaidso_widget
- widget_recent-comments
- perfecty_push
- perfecty_push_db_version
- can_compress_scripts
- widget_recent-posts
- theysaidso_admin_options
Smoke tests 50% from 4 tests
Server-side errors Passed 1 test
🔹 Test weight: 20 | This is a short smoke test looking for server-side errors
The smoke test was a success, however most plugin functionality was not tested
SRP 0% 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
The following issues need your attention
- 1× PHP files perform the task of outputting text when accessed with GET requests:
- > /wp-content/plugins/perfecty-push-notifications/public/js/service-worker-loader.js.php
- 292× PHP files trigger errors when accessed directly with GET requests (only 10 are shown):
- > PHP Fatal error
Uncaught Error: Class 'PHPUnit\\Framework\\TestCase' not found in wp-content/plugins/perfecty-push-notifications/vendor/web-token/jwt-key-mgmt/Tests/CertificateTest.php:30
- > PHP Fatal error
Uncaught Error: Interface 'Jose\\Component\\KeyManagement\\Analyzer\\KeysetAnalyzer' not found in wp-content/plugins/perfecty-push-notifications/vendor/web-token/jwt-key-mgmt/Analyzer/MixedKeyTypes.php:18
- > PHP Fatal error
Uncaught Error: Interface 'Ramsey\\Uuid\\Converter\umberConverterInterface' not found in wp-content/plugins/perfecty-push-notifications/vendor/ramsey/uuid/src/Converter/Number/BigNumberConverter.php:28
- > PHP Fatal error
Uncaught Error: Class 'Jose\\Component\\Signature\\Serializer\\Serializer' not found in wp-content/plugins/perfecty-push-notifications/vendor/web-token/jwt-signature/Serializer/JSONFlattenedSerializer.php:23
- > PHP Fatal error
Uncaught Error: Interface 'Psr\\Http\\Message\\RequestInterface' not found in wp-content/plugins/perfecty-push-notifications/vendor/psr/http-message/src/ServerRequestInterface.php:43
- > PHP Fatal error
require(): Failed opening required 'wp-content/plugins/perfecty-push-notifications/vendor/brick/math/vendor/autoload.php' (include_path='.:/usr/share/php') in wp-content/plugins/perfecty-push-notifications/vendor/brick/math/random-tests.php on line 10
- > PHP Fatal error
Uncaught Error: Interface 'Psr\\Http\\Message\\RequestInterface' not found in wp-content/plugins/perfecty-push-notifications/vendor/guzzlehttp/psr7/src/Request.php:15
- > PHP Fatal error
Uncaught Error: Interface 'Jose\\Component\\KeyManagement\\Analyzer\\KeyAnalyzer' not found in wp-content/plugins/perfecty-push-notifications/vendor/web-token/jwt-key-mgmt/Analyzer/AlgorithmAnalyzer.php:18
- > PHP Fatal error
Uncaught Error: Call to undefined function esc_html__() in wp-content/plugins/perfecty-push-notifications/admin/partials/perfecty-push-admin-notifications-view.php:3
- > PHP Fatal error
Uncaught Error: Class 'PHPUnit\\Framework\\TestCase' not found in wp-content/plugins/perfecty-push-notifications/vendor/web-token/jwt-signature-algorithm-ecdsa/Tests/ECDSAFromRFC6979Test.php:40
- > PHP Fatal error
User-side errors Passed 1 test
🔹 Test weight: 20 | A shallow check that no browser errors were triggered
No browser issues were found
Optimizations
Plugin configuration 93% from 29 tests
readme.txt Passed 16 tests
The readme.txt file is undoubtedly the most important file in your plugin, preparing it for public listing on WordPress.org
4 plugin tags: push notifications, web push notifications, notifications, user engagement
perfecty-push-notifications/perfecty-push.php 85% from 13 tests
The primary PHP file in "Perfecty Push Notifications" version 1.6.2 is used by WordPress to initiate all plugin functionality
It is important to fix the following:
- Description: Keep the plugin description shorter than 140 characters (currently 159 characters long)
- Main file name: It is recommended to name the main PHP file as the plugin slug ("perfecty-push-notifications.php" instead of "perfecty-push.php")
Code Analysis 5% from 3 tests
File types 0% from 1 test
🔸 Test weight: 35 | This is an overview of programming languages used in this plugin; dangerous file extensions are not allowed
It is important to fix the following items
- You should never include executable (binary) or otherwise dangerous files in your plugin
- .crt - Security Certificate in Firefox, IE, Chrome, Safari
- ☣ wp-content/plugins/perfecty-push-notifications/vendor/web-token/jwt-key-mgmt/Tests/Chain/google.crt
- .crt - Security Certificate in Firefox, IE, Chrome, Safari
Language | Files | Blank lines | Comment lines | Lines of code |
---|---|---|---|---|
PHP | 485 | 7,786 | 20,256 | 32,474 |
Markdown | 33 | 1,919 | 0 | 5,303 |
JSON | 26 | 1 | 0 | 2,696 |
CSS | 6 | 89 | 93 | 1,795 |
JavaScript | 8 | 60 | 33 | 538 |
XML | 4 | 12 | 1 | 127 |
YAML | 4 | 2 | 0 | 43 |
make | 1 | 4 | 0 | 9 |
PHP code Passed 2 tests
A short review of cyclomatic complexity and code structure
There were no cyclomatic complexity issued detected
Cyclomatic complexity | |
---|---|
Average complexity per logical line of code | 0.34 |
Average class complexity | 8.47 |
▷ Minimum class complexity | 1.00 |
▷ Maximum class complexity | 132.00 |
Average method complexity | 2.30 |
▷ Minimum method complexity | 1.00 |
▷ Maximum method complexity | 43.00 |
Code structure | ||
---|---|---|
Namespaces | 66 | |
Interfaces | 65 | |
Traits | 11 | |
Classes | 372 | |
▷ Abstract classes | 16 | 4.30% |
▷ Concrete classes | 356 | 95.70% |
▷ Final classes | 87 | 24.44% |
Methods | 2,677 | |
▷ Static methods | 470 | 17.56% |
▷ Public methods | 2,280 | 85.17% |
▷ Protected methods | 100 | 3.74% |
▷ Private methods | 297 | 11.09% |
Functions | 229 | |
▷ Named functions | 100 | 43.67% |
▷ Anonymous functions | 129 | 56.33% |
Constants | 292 | |
▷ Global constants | 17 | 5.82% |
▷ Class constants | 275 | 94.18% |
▷ Public constants | 233 | 84.73% |
Plugin size Passed 2 tests
Image compression Passed 2 tests
Using a strong compression for your PNG files is a great way to speed-up your plugin
12 PNG files occupy 0.06MB with 0.02MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant | |||
---|---|---|---|
File | Size - original | Size - compressed | Savings |
admin/css/jquery-ui/themes/smoothness/images/ui-icons_cd0a0a_256x240.png | 4.57KB | 4.18KB | ▼ 8.43% |
admin/css/jquery-ui/themes/smoothness/images/ui-bg_glass_65_ffffff_1x400.png | 0.26KB | 0.09KB | ▼ 66.79% |
admin/css/jquery-ui/themes/smoothness/images/ui-bg_glass_75_dadada_1x400.png | 0.32KB | 0.16KB | ▼ 50.46% |
admin/css/jquery-ui/themes/smoothness/images/ui-icons_222222_256x240.png | 6.86KB | 4.18KB | ▼ 39.05% |
admin/css/jquery-ui/themes/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png | 0.32KB | 0.18KB | ▼ 44.00% |