Ally - Web Accessibility & Usability 4.0.3

Does "Ally - Web Accessibility & Usability" work with WordPress 6.9.1 and PHP 8.1.12? A smoke test was performed on .

Summary

Errors
4Database errors
9JavaScript exceptions
All test pages loaded successfully
No resource errors
Performance

Memory usage: 258.12 KiB
The average PHP memory usage increased by this amount after activating by the plugin.

Page speed impact: 0.055 seconds
The average page load time increased by this amount after activating the plugin.

Environment
WordPress version6.9.1
PHP version8.1.12
MySQL version10.6.10
PHP memory limit512M
Plugin Info
Last updated
Active installs 500,000+
WordPress.org page https://wordpress.org/plugins/pojo-accessibility/
Badges

WordPress compatibility badge PHP compatibility badge

Get badge code

Pages 6

Plugins ‹ Test site — WordPress

Page screenshot: Plugins ‹ Test site — WordPress
URL /wp-admin/plugins.php?plugin_status=all&paged=1&s
Requested URL /wp-admin/plugins.php?action=activate&plugin=pojo-accessibility%2Fpojo-accessibility.php&plugin_status=all&paged=1&s&_wpnonce=fcb63cc255
Aspect after-activation
HTTP status 200
Load time 0.672 s
Memory usage 4.13 MiB
JS errors None
Resource errors None

Elementor

Page screenshot: Elementor
URL /wp-admin/admin.php?page=elementor-home
Aspect menu-item
HTTP status 200
Load time 0.473 s
Memory usage 3.9 MiB
JS errors None
Resource errors None

Elementor → Accessibility

Page screenshot: Elementor → Accessibility
URL /wp-admin/admin.php?page=accessibility-settings
Aspect menu-item
HTTP status 200
Load time 1.262 s
Memory usage 3.93 MiB
JS errors
[
    {
        "message": "APIError: No route was found matching the URL and request method.\n    at Function.request (/wp-content/plugins/pojo-accessibility/assets/build/admin.js?ver=4aa0f17a0ea470f314fd:106:2781)\n    at async Promise.all (index 0)",
        "trace": null,
        "code": null
    },
    {
        "message": "APIError: No route was found matching the URL and request method.\n    at Function.request (/wp-content/plugins/pojo-accessibility/assets/build/admin.js?ver=4aa0f17a0ea470f314fd:106:2781)",
        "trace": null,
        "code": null
    }
]
Resource errors None

Elementor → Upgrade

Page screenshot: Elementor → Upgrade
URL https://elementor.com/pro/?utm_source=upgrade-one-wp-menu&utm_medium=wp-dash&utm_campaign=gopro
Requested URL /wp-admin/admin.php?page=elementor-one-upgrade
Aspect menu-item
HTTP status 200
Load time 9.610 s
Memory usage N/A
JS errors
[
    {
        "message": "DOMException: Failed to execute 'querySelector' on 'Element': '.toggle__wrapper:has(.toggle__switcher)' is not a valid selector.\n    at https://elementor.com/pro/?utm_source=upgrade-one-wp-menu&utm_medium=wp-dash&utm_campaign=gopro:5226:41\n    at NodeList.forEach (<anonymous>)\n    at HTMLDocument.<anonymous> (https://elementor.com/pro/?utm_source=upgrade-one-wp-menu&utm_medium=wp-dash&utm_campaign=gopro:5216:22)",
        "trace": null,
        "code": null
    },
    {
        "message": "ReferenceError: imagesLoaded is not defined\n    at Loop.initMasonry (https://elementor.com/wp-content/plugins/elementor-pro/assets/js/loop.89cc81d2188312a17a17.bundle.min.js:2:7864)\n    at Loop.r.<computed> [as initMasonry] (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:5913)\n    at Loop.run (https://elementor.com/wp-content/plugins/elementor-pro/assets/js/loop.89cc81d2188312a17a17.bundle.min.js:2:8707)\n    at Loop.r.<computed> [as run] (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:5913)\n    at Loop.onInit (https://elementor.com/wp-content/plugins/elementor-pro/assets/js/loop.89cc81d2188312a17a17.bundle.min.js:2:8833)\n    at Loop.onInit (https://elementor.com/wp-content/plugins/elementor-pro/assets/js/loop.89cc81d2188312a17a17.bundle.min.js:2:5815)\n    at Loop.Module.trigger (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:5728)\n    at Loop.r.<computed> [as trigger] (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:5913)\n    at Loop.Module (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:6010)\n    at Loop.child (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:6275)",
        "trace": null,
        "code": null
    },
    {
        "message": "ReferenceError: imagesLoaded is not defined\n    at Loop.initMasonry (https://elementor.com/wp-content/plugins/elementor-pro/assets/js/loop.89cc81d2188312a17a17.bundle.min.js:2:7864)\n    at Loop.r.<computed> [as initMasonry] (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:5913)\n    at Loop.run (https://elementor.com/wp-content/plugins/elementor-pro/assets/js/loop.89cc81d2188312a17a17.bundle.min.js:2:8707)\n    at Loop.r.<computed> [as run] (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:5913)\n    at Loop.onInit (https://elementor.com/wp-content/plugins/elementor-pro/assets/js/loop.89cc81d2188312a17a17.bundle.min.js:2:8833)\n    at Loop.onInit (https://elementor.com/wp-content/plugins/elementor-pro/assets/js/loop.89cc81d2188312a17a17.bundle.min.js:2:5815)\n    at Loop.Module.trigger (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:5728)\n    at Loop.r.<computed> [as trigger] (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:5913)\n    at Loop.Module (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:6010)\n    at Loop.child (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:6275)",
        "trace": null,
        "code": null
    },
    {
        "message": "ReferenceError: imagesLoaded is not defined\n    at Loop.initMasonry (https://elementor.com/wp-content/plugins/elementor-pro/assets/js/loop.89cc81d2188312a17a17.bundle.min.js:2:7864)\n    at Loop.r.<computed> [as initMasonry] (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:5913)\n    at Loop.run (https://elementor.com/wp-content/plugins/elementor-pro/assets/js/loop.89cc81d2188312a17a17.bundle.min.js:2:8707)\n    at Loop.r.<computed> [as run] (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:5913)\n    at Loop.onInit (https://elementor.com/wp-content/plugins/elementor-pro/assets/js/loop.89cc81d2188312a17a17.bundle.min.js:2:8833)\n    at Loop.onInit (https://elementor.com/wp-content/plugins/elementor-pro/assets/js/loop.89cc81d2188312a17a17.bundle.min.js:2:5815)\n    at Loop.Module.trigger (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:5728)\n    at Loop.r.<computed> [as trigger] (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:5913)\n    at Loop.Module (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:6010)\n    at Loop.child (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:6275)",
        "trace": null,
        "code": null
    },
    {
        "message": "ReferenceError: imagesLoaded is not defined\n    at Loop.initMasonry (https://elementor.com/wp-content/plugins/elementor-pro/assets/js/loop.89cc81d2188312a17a17.bundle.min.js:2:7864)\n    at Loop.r.<computed> [as initMasonry] (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:5913)\n    at Loop.run (https://elementor.com/wp-content/plugins/elementor-pro/assets/js/loop.89cc81d2188312a17a17.bundle.min.js:2:8707)\n    at Loop.r.<computed> [as run] (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:5913)\n    at Loop.onInit (https://elementor.com/wp-content/plugins/elementor-pro/assets/js/loop.89cc81d2188312a17a17.bundle.min.js:2:8833)\n    at Loop.onInit (https://elementor.com/wp-content/plugins/elementor-pro/assets/js/loop.89cc81d2188312a17a17.bundle.min.js:2:5815)\n    at Loop.Module.trigger (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:5728)\n    at Loop.r.<computed> [as trigger] (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:5913)\n    at Loop.Module (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:6010)\n    at Loop.child (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:6275)",
        "trace": null,
        "code": null
    },
    {
        "message": "ReferenceError: imagesLoaded is not defined\n    at Loop.initMasonry (https://elementor.com/wp-content/plugins/elementor-pro/assets/js/loop.89cc81d2188312a17a17.bundle.min.js:2:7864)\n    at Loop.r.<computed> [as initMasonry] (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:5913)\n    at Loop.run (https://elementor.com/wp-content/plugins/elementor-pro/assets/js/loop.89cc81d2188312a17a17.bundle.min.js:2:8707)\n    at Loop.r.<computed> [as run] (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:5913)\n    at Loop.onInit (https://elementor.com/wp-content/plugins/elementor-pro/assets/js/loop.89cc81d2188312a17a17.bundle.min.js:2:8833)\n    at Loop.onInit (https://elementor.com/wp-content/plugins/elementor-pro/assets/js/loop.89cc81d2188312a17a17.bundle.min.js:2:5815)\n    at Loop.Module.trigger (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:5728)\n    at Loop.r.<computed> [as trigger] (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:5913)\n    at Loop.Module (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:6010)\n    at Loop.child (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:6275)",
        "trace": null,
        "code": null
    },
    {
        "message": "ReferenceError: imagesLoaded is not defined\n    at Loop.initMasonry (https://elementor.com/wp-content/plugins/elementor-pro/assets/js/loop.89cc81d2188312a17a17.bundle.min.js:2:7864)\n    at Loop.r.<computed> [as initMasonry] (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:5913)\n    at Loop.run (https://elementor.com/wp-content/plugins/elementor-pro/assets/js/loop.89cc81d2188312a17a17.bundle.min.js:2:8707)\n    at Loop.r.<computed> [as run] (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:5913)\n    at Loop.onInit (https://elementor.com/wp-content/plugins/elementor-pro/assets/js/loop.89cc81d2188312a17a17.bundle.min.js:2:8833)\n    at Loop.onInit (https://elementor.com/wp-content/plugins/elementor-pro/assets/js/loop.89cc81d2188312a17a17.bundle.min.js:2:5815)\n    at Loop.Module.trigger (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:5728)\n    at Loop.r.<computed> [as trigger] (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:5913)\n    at Loop.Module (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:6010)\n    at Loop.child (https://elementor.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.34.1:1:6275)",
        "trace": null,
        "code": null
    }
]
Resource errors None

Test site – Just another WordPress site

Page screenshot: Test site – Just another WordPress site
URL /
Aspect front-page
HTTP status 200
Load time 0.678 s
Memory usage 4.25 MiB
JS errors None
Resource errors None

Dashboard ‹ Test site — WordPress

Page screenshot: Dashboard ‹ Test site — WordPress
URL /wp-admin/index.php
Aspect new-meta-boxes
HTTP status 200
Load time 0.427 s
Memory usage 3.96 MiB
JS errors None
Resource errors None

Benchmark

URL Load time Memory usage
Inactive Active Change Inactive Active Change
/wp-admin/index.php0.463 s0.830 s+0.367 s3.78 MiB3.96 MiB+ 192.02 KiB
/wp-admin/edit.php0.439 s0.419 s-0.020 s3.78 MiB4.03 MiB+ 248.53 KiB
/wp-admin/post-new.php0.814 s0.937 s+0.123 s6.31 MiB6.84 MiB+ 545.66 KiB
/wp-admin/upload.php0.498 s0.473 s-0.025 s3.74 MiB3.93 MiB+ 193.29 KiB
/wp-admin/options-writing.php0.358 s0.365 s+0.007 s3.71 MiB3.9 MiB+ 190.7 KiB
/wp-admin/media-new.php0.538 s0.725 s+0.187 s3.7 MiB3.9 MiB+ 198.89 KiB
/wp-admin/edit-tags.php?taxonomy=category0.351 s0.345 s-0.006 s3.72 MiB3.92 MiB+ 209.34 KiB
/wp-admin/post-new.php?post_type=page0.722 s0.717 s-0.005 s6.3 MiB6.82 MiB+ 539.45 KiB
/wp-admin/options-discussion.php0.358 s0.356 s-0.002 s3.71 MiB3.9 MiB+ 187.2 KiB
/wp-admin/edit-comments.php0.345 s0.388 s+0.043 s3.73 MiB3.92 MiB+ 186.79 KiB
/0.298 s0.234 s-0.064 s4.11 MiB4.25 MiB+ 147.48 KiB
Average 0.471 s0.526 s+0.055 s4.24 MiB4.49 MiB+ 258.12 KiB

Code Statistics

Note: Third-party libraries and minified JS/CSS files are excluded from these statistics where possible, so the numbers you see here may be lower than those reported by other tools.

JavaScript
PHP
Language % Lines of code Comment lines Files
JavaScript69.5%28,2732,024380
PHP24.4%9,9292,628115
CSS4.8%1,9578316
LESS1.3%520617
XML0.0%1901
SVG0.0%702
Total 40,705 4,796 521

PHP Code Analysis | More results »

Lines of code 9,994
Total complexity 1,464
Median class complexity 8.0
Median method complexity 1.0
Most complex class EA11y\Modules\Settings\Module
Most complex function EA11y\Modules\Remediation\Components\Remediation_Runner::is_template_redirect_ajax_request()
Classes 105
Methods 635
Functions 0

Additions

Things that the plugin adds to the site. This section is not intended to be comprehensive. The test tool only looks for a few specific types of added content.

Options wp_options 1

Meta Boxes

{
    "dashboard": {
        "ea11y-dashboard-widget": {
            "title": "Accessibility",
            "context": "column3"
        }
    }
}

PHP Error Log 4 lines

[03-Feb-2026 19:28:01 UTC] WordPress database error Table 'wordpress.wp_ea11y_page_scanned' doesn't exist for query SELECT * FROM wp_ea11y_page_scanned  WHERE 1 ORDER BY created_at desc LIMIT 1000 made by wp_dashboard, do_meta_boxes, EA11y\Modules\Dashboard\Widgets\Ally_Dashboard_Widget::ally_widget_render, EA11y\Modules\Scanner\Classes\Utils::get_scanner_stats, EA11y\Modules\Remediation\Database\Page_Entry::get_pages, EA11y\Classes\Database\Table::select
[03-Feb-2026 19:28:23 UTC] WordPress database error Table 'wordpress.wp_ea11y_page_scanned' doesn't exist for query SELECT * FROM wp_ea11y_page_scanned  WHERE 1 ORDER BY created_at desc LIMIT 1000 made by wp_dashboard, do_meta_boxes, EA11y\Modules\Dashboard\Widgets\Ally_Dashboard_Widget::ally_widget_render, EA11y\Modules\Scanner\Classes\Utils::get_scanner_stats, EA11y\Modules\Remediation\Database\Page_Entry::get_pages, EA11y\Classes\Database\Table::select
[03-Feb-2026 19:28:33 UTC] WordPress database error Table 'wordpress.wp_ea11y_page_scanned' doesn't exist for query SELECT * FROM wp_ea11y_page_scanned  WHERE 1 ORDER BY created_at desc LIMIT 1000 made by wp_dashboard, do_meta_boxes, EA11y\Modules\Dashboard\Widgets\Ally_Dashboard_Widget::ally_widget_render, EA11y\Modules\Scanner\Classes\Utils::get_scanner_stats, EA11y\Modules\Remediation\Database\Page_Entry::get_pages, EA11y\Classes\Database\Table::select
[03-Feb-2026 19:28:34 UTC] WordPress database error Table 'wordpress.wp_ea11y_page_scanned' doesn't exist for query SELECT * FROM wp_ea11y_page_scanned  WHERE 1 ORDER BY created_at desc LIMIT 1000 made by wp_dashboard, do_meta_boxes, EA11y\Modules\Dashboard\Widgets\Ally_Dashboard_Widget::ally_widget_render, EA11y\Modules\Scanner\Classes\Utils::get_scanner_stats, EA11y\Modules\Remediation\Database\Page_Entry::get_pages, EA11y\Classes\Database\Table::select
See also: All tests for this plugin, How to Hide Ally - Web Accessibility & Usability Admin Menus and Widgets